我正在使用jqGrid版本4.6.0
我的问题是一样的 This Question
接受的解决方案是使用主键但我的行没有主键。有没有办法在排序,更改页面或删除行时强制jqgrid具有唯一的行ID?
我遇到的问题是,如果我从5行的网格中删除一个说法的行2,则将3的rowid设置为2,将row4设置为3 ...等等。我希望我的行是唯一的ID,我希望在客户端生成
有关详细信息:我的网格是客户端分页和排序。
以下是我网格示例数据的JsFiddle链接。
testRow = function()
{
var row2correct = $("#list").jqGrid('getRowData', 2);// {meterid:2, DocGroupName: "name2", DocList: "list2", Mandatory: "No"};
var row6wong = $("#list").jqGrid('getRowData', 6);// is empty but i was expecting {meterid:4, DocGroupName: "name6", DocList: "ggg", Mandatory: "Yes"}
}
var mydata = [
{meterid:1 , metername: "name1", DocList: "list1", Mandatory: "Yes"},
{meterid:2, metername: "name2", DocList: "list2", Mandatory: "No"},
{meterid:1, metername: "name3", DocList: "list3", Mandatory: "No"},
{meterid:3, metername: "name4", DocList: "list4", Mandatory: "Yes"},
{meterid:4, metername: "name5", DocList: "list5", Mandatory: "Yes"},
{meterid:4, metername: "name6", DocList: "ggg", Mandatory: "Yes"},
];
$("#list").jqGrid({
datatype: "local",
data: mydata,
height: "auto",
colNames: ['Meterid', 'metername','Document Name','No of Mandatory'],
colModel :[
{name:'meterid', index:'meterid', width:55},
{name:'metername', index:'metername', width:90},
{name:'DocList', index:'DocList', width:90, editable: true }, {name:'Mandatory', index:'Mandatory', width:90, editable: true}
],
pager: '#pager',
rowNum:4,
rowList:[4,8,30],
sortorder: 'asc',
viewrecords: true,
gridview: true
});
答案 0 :(得分:1)
您可以添加
var i, l = mydata.length, item;
for (i = 0; i < l; i++) {
item = mydata[i];
item.id = String(item.meterid) + "_" + item.metername;
}
在使用mydata
作为数据参数的值之前。它应该解决你的主要问题。如果从服务器加载数据,则可以在服务器端分配id或使用beforeProcessing
回调来修改从服务器返回的数据,然后jqGrid将处理数据。