Jqgrid数据在分组时是未定义的



我使用免费的jqgrid。我使用以下代码作为一个简单的例子。数据在没有分组的情况下是正确的,但是分组时无法捕获行中未显示的数据(placeid)。我明白,在分组,rowObject没有placeid,但我如何去解决这个问题。链接:http://jsfiddle.net/johnnash03/6jhqgxw8/5/

        var rows = [{
              "place": "Kerala",
              "placeid": "61",
              "code": "kc10",
        }]
        var cols =  ["place","code"];
        $("#grid").jqGrid({
            datatype: "local",
            height: 250,
            colNames: cols,
            colModel: [{
                name: 'place',
            }, {
                name: 'code',
                formatter: function( cellvalue, options, rowObject ) {
                    return rowObject['placeid']
                }
            }]
        });
        for(var i=0;i<rows.length;i++)
            $("#grid").jqGrid('addRowData',i+1,rows[i]);
        // Data comes correct on commenting following line.
        $("#grid").jqGrid( 'groupingGroupBy', 'place');

演示中的主要问题是属性placeid的使用,它不在网格的任何列中。您还可以使用循环中调用的addRowData方法填充网格。这是填充网格最慢的方式,我知道。在您的情况下,最重要的是,内部的data的网格将填补只有place, codeid属性。本地不会保存placeid属性。因此,在随后的网格摸索过程中,人们不会看到它。

可以通过使用additionalProperties选项来解决这个问题,该选项指定输入项的附加属性名称,这些属性需要保存在本地data中。添加

additionalProperties: ["placeid"]

选项解决了这个问题。参见修改后的演示http://jsfiddle.net/OlegKi/6jhqgxw8/8/

我强烈建议您将代码修改为:

var rows = [{
      "place": "Kerala",
      "placeid": "61",
      "code": "kc10",
}];
$("#grid").jqGrid({
    data: rows,
    colModel: [
        { name: "place" },
        { name: "code",
            formatter: function (cellvalue, options) {
                return options.rowData.placeid;
            }
        }
    ],
    grouping: true, 
    groupingView : { 
        groupField : ["place"]
    },
    localReader: { id: "placeid" }
});

可以选择添加additionalProperties: ["placeid"]。参见http://jsfiddle.net/OlegKi/6jhqgxw8/9/。

上面的代码一次创建、填充和分组数据。它还使用localReader: { id: "placeid" }来通知placeid属性具有row(行:<tr>元素的id属性的唯一值)信息,而不是默认的id属性。

最新更新