我使用免费的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
, code
和id
属性。本地不会保存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
属性。