jqGrid 4.8.0 - 如何使用 jsonmap 获取单元格类型或单元格值

jqGrid 4.8.0 - How to get cell type or cell value using jsonmap

我正在尝试从 onSelectRow 事件中获取单元格值。

我可以使用:

celValue = $('#jqGrid').jqGrid ('getCell', rowid, 'id');

两个问题:

  1. 有没有办法通过使用 'jsonmap' 而不是 'name' 来获取它?
  2. 有没有办法获取单元格的类型? (日期、数字、整数等')

谢谢,

总计

您可以先找到要从中获取数据的列的索引。您可以使用像

这样的代码
var $grid = $("#jqGrid"), colModel = $grid.jqGrid("getGridParam", "colModel"), cm, i,
    iCol = -1, l = colModel.length, propName = "jsonmap", propVal = "start_time", val;

for (i = 0; i < l; i++) {
    cm = colModel[i];
    if (cm[propName] === propVal) {
        iCol = i;
        break;
    }
}
if (iCol >= 0) {
    val = $grid.jqGrid("getCell", rowid, iCol);
}

以上代码在属性 propName ("jsonmap").带有 属性 的第一列将用作 getCell 的选项。

您可以用同样的方法搜索具有特定 formatter 的列。我建议您使用 colModel 中的列模板。如果你定义 cmTemplate

$.extend(true, $.jgrid, {
    cmTemplate: {
        dateType: {
            sorttype: "date", edittype: "date", formatter: "date",
            formatoptions: { srcformat: "U/1000", newformat: "m/d/Y H:i:s" },
            searchoptions: { sopt: [ "eq", "ne", "lt", "le", "gt", "ge" ] },
            editoptions: { sopt: [ "eq", "ne", "lt", "le", "gt", "ge" ] },
            searchrules: { date: true }
        }
    }
});

之后你可以在colModel中使用template: "dateType"属性。通过这种方式,您可以定义许多不同的类型,它们都使用相同的格式化程序。此外,您将拥有真正可读的 colModel,并且非常容易维护。您可以包含 width 等属性,您可以在 colModel 覆盖 。通过这种方式,您可以为某些属性指定更多更好的默认值,但您仍然可以像以前一样保持灵活性。如果我检查您发布的 the demo 的代码,我认为列模板对您非常有用。