将复杂的对象保存到列中并在之后恢复它是可行的。
这是一个例子: 杰森:
[{"datamain":"mydata",
"address":{"data1":15,"data2":0.0,"data3":"1000"}}
}]
的jqGrid:
jQuery("#rowed5").jqGrid({
datatype: "local",
loadtext:"Loading...",
colNames:['Name',
'obaddress'],
colModel:[
{name:'datamain',index:'datamain', width:200,editable: true,edittype:'text'},
{name:'address',index:'address', width:30, editable: false,hidden : true,edittype:'text'}
],
cellsubmit: "clientArray",
pager:"#pager"
});
如果我尝试访问地址:
var rowData = $("#rowed5").getRowData(rowid);
var myaddress= rowData['address'];
然后我得到'[object Object]'但它是一个字符串!!!我做不到:myaddress.data1
任何建议???
答案 0 :(得分:3)
如果我正确理解您的问题,您可以执行以下操作:
var rowData = $("#rowed5").jqGrid("getLocalRow", rowid);
alert("data3=" + rowData.address.data3);
顺便保存address
部分,您无需创建隐藏列"address"
。因此,您不会在表中创建任何隐藏列来保存任何特定于行的自定义数据。您应该像往常一样填充数据:使用jqGrid的data
选项:
var mydata = [
{
id: "10",
"datamain": "mydata",
"address": {"data1": 15, "data2": 0.0, "data3": "1000"}
},
{
id: "20",
"datamain": "mydata2",
"address": {"data1": 18, "data2": 0.1, "data3": "3000"}
}
];
$("#rowed5").jqGrid({
datatype: "local",
data: mydata,
colNames: ['Name'],
colModel: [
{name: 'datamain', width: 300, editable: true}
],
height: "auto",
...
});
如果所有数据将保存在jqGrid的内部data
参数中。您可以使用$("#rowed5").jqGrid("getGridParam", "data")
返回所有数据,或使用$("#rowed5").jqGrid("getLocalRow", rowid)
仅返回指定行的数据。
The small demo展示了这种方法。数据每页显示一行。因此,您可以转到下一页并使用单元格编辑修改数据。保存后,将显示当前单元格中的“地址”信息。
答案 1 :(得分:0)
我刚解决了这个问题。主要问题是我必须以这种方式加载数据:
jQuery("#rowed5")
.jqGrid('setGridParam',
{
datatype: 'local',
data:mydata
})
.trigger("reloadGrid");
您不必这样做:
jQuery("#rowed5").jqGrid("clearGridData", true);
for(var i=0;i < data.item.length;i++){
jQuery("#rowed5").jqGrid('addRowData',i,data.item[i]);
}