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

时间:2015-03-25 12:07:25

标签: jquery jqgrid free-jqgrid

我试图从onSelectRow事件中获取一个单元格值。

我可以使用以下方式实现:

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

两个问题:

  1. 有没有办法使用'jsonmap',而不是'name'来获取它?
  2. 有没有办法获得细胞的类型? (日期,数字,整数等')
  3. 谢谢,

    塔尔。

1 个答案:

答案 0 :(得分:0)

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

之类的代码
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);
}

上述代码搜索属性iColpropVal)中"start_time"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 }
        }
    }
});

之后,您可以在template: "dateType"中使用colModel属性。在这种方式中,您可以定义许多使用相同格式化程序的不同类型。此外,您将具有可读性colModel,可以非常容易地维护。您可以在width中添加colModel等可以覆盖的属性。在某种程度上,您可以为某些属性指定更好的默认值,但您可以像以前一样保持相同的灵活性。如果我检查您发布的the demo代码,我认为列模板对您来说非常有用。