【问题标题】:JQgrid save and recover object from columnJQgrid从列中保存和恢复对象
【发布时间】:2012-10-17 11:32:15
【问题描述】:

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

这是一个例子: 杰森:

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

有什么推荐吗???

【问题讨论】:

    标签: object jqgrid hidden


    【解决方案1】:

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

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

    【讨论】:

    • 我刚刚解决了这个问题。主要问题是我必须以这种方式加载数据: jQuery("#rowed5") .jqGrid('setGridParam', { datatype: 'local', data:mydata }) .trigger("reloadGrid");跨度>
    • 对“getLocalRow”方法的良好调用。这返回了与返回字符串的“getRowData”相对的对象。谢谢。
    • @styfle:不客气! getLocalRow 和内部data_index 的其他优点如下:如果mydata 包含其他属性,则会以与输入数据完全相同的形式保存。因此不需要隐藏列,甚至可以保存与行相关的复杂对象。请参阅the answerthe answer,其中嵌套的子网格信息将保存在data 中并使用getLocalRow 访问。
    【解决方案2】:

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

            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]);
            }
    

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2014-10-14
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多