Object JQgrid从列中保存和恢复对象

Object JQgrid从列中保存和恢复对象,object,jqgrid,hidden,Object,Jqgrid,Hidden,可以将一个复杂的对象保存到列中,然后恢复 这是一个例子: Json: Jqgrid: jQuery("#rowed5").jqGrid({ datatype: "local", loadtext:"Loading...", colNames:['Name', 'obaddress'], colModel:[ {name:'datamain',index:'datamain',

可以将一个复杂的对象保存到列中,然后恢复

这是一个例子: Json:

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]”,但它是一个字符串!!!我做不到:
myaddress.data1


有什么建议吗?

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

var rowData=$(“#rowed5”).jqGrid(“getLocalRow”,rowid);
警报(“data3=“+rowData.address.data3”);
通过保存
地址
部分的方式,您不需要创建隐藏列
“地址”
。因此,您不会在表中创建任何隐藏列来保存任何特定于行的自定义数据。您应该像通常一样填充数据:使用jqGrid的
data
选项:

var mydata=[
{
身份证号码:“10”,
“datamain”:“mydata”,
“地址:{“数据1”:15,“数据2”:0.0,“数据3”:“1000”}
},
{
身份证号码:“20”,
“datamain”:“mydata2”,
“地址:{“data1”:18,“data2”:0.1,“data3”:“3000”}
}
];
$(“#rowed5”).jqGrid({
数据类型:“本地”,
数据:mydata,
colNames:['Name'],
colModel:[
{name:'datamain',宽度:300,可编辑:true}
],
高度:“自动”,
...
});
情况下,所有数据将保存在jqGrid的内部
数据
参数中。可以使用
$(“#rowed5”).jqGrid(“getGridParam”,“data”)
返回所有数据,也可以使用
$(“#rowed5”).jqGrid(“getLocalRow”,rowid)
仅返回指定行的数据


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

我刚刚解决了问题。主要问题是我必须以这种方式加载数据:

        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]);
        }
jQuery(“#rowed5”).jqGrid(“clearGridData”,true);
对于(var i=0;i
我刚刚解决了这个问题。主要的问题是我必须以这种方式加载数据:jQuery(#rowed5”).jqGrid('setGridParam',{datatype:'local',data:mydata}).trigger(“reloadGrid”);对“getLocalRow”方法的良好调用。这将返回与返回字符串的“getRowData”对应的对象。谢谢。@Stifle:不客气!
getLocalRow
和内部
data
\u index
的其他优点如下:如果
mydata
包含其他属性,则将以与输入数据完全相同的形式保存。因此,不需要隐藏列,甚至可以保存与行关联的复杂对象。请参见和将嵌套子网格信息保存在
data
中的位置,并使用
getLocalRow
访问。
       jQuery("#rowed5").jqGrid("clearGridData", true);
        for(var i=0;i < data.item.length;i++){
            jQuery("#rowed5").jqGrid('addRowData',i,data.item[i]);
        }