4

可以将复杂的对象保存到列中并在之后将其恢复。

这是一个例子:Json:

[{"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

有什么推荐???

4

2 回答 2

3

如果我正确理解您的问题,您可以执行以下操作:

var rowData = $("#rowed5").jqGrid("getLocalRow", rowid);
alert("data3=" + rowData.address.data3);

顺便保存address不需要创建隐藏列的部分"address"。因此,您无需在表中创建任何隐藏列来保存任何行特定的自定义数据。您应该像往常一样填写数据:使用datajqGrid 选项:

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",
    ...
});

在这种情况下,所有数据都将保存在datajqGrid 的内部参数中。可以$("#rowed5").jqGrid("getGridParam", "data")用来返回所有数据,也可以 $("#rowed5").jqGrid("getLocalRow", rowid)用来只返回指定行的数据。

小型演示现场演示了该方法。数据每页显示一行。因此,您可以转到下一页并使用单元格编辑修改数据。保存后将显示当前单元格中的“地址”信息。

于 2012-10-17T12:16:00.960 回答
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]);
        }
于 2012-10-17T14:08:55.947 回答