如何将 JSON 数据加载到 Jqgrid 中?

3

我使用以下方法将数据加载到jqgrid中。我无法将json数据加载到jqgrid中。因此,我将json解析为数组,如mydata=json.parse(jsondata)。然后使用datatype: "local"将此数组(mydata)绑定到jqgrid上。我的问题是如何将json数据绑定到jqgrid?

         $("#datagrid").jqGrid({

                    datatype: "local", 
                    data: mydata,
                    colNames:['companyid','company', 'price', 'Change','perchange','LastUpdated'],
                    colModel:[
                        {name:'companyid',index:'companyid', width:100,editable:true,editoptions:{size:10}},
                        {name:'company',index:'company', width:100,editable:true},
                        {name:'price',index:'price', width:100,editable:true,editoptions:{size:10}},
                        {name:'Change',index:'Change', width:100,editable:true,editoptions:{size:25}},
                        {name:'perchange',index:'perchange', width:100, align:"right",editable:true,editoptions:{size:10}},
                        {name:'LastUpdated',index:'LastUpdated', width:200, align:"right",editable:true,editoptions:{size:10}}
                    ],
                    rowNum:10,
                    rowList:[3,6],
                    loadonce: true,
                    pager: '#navGrid',
                    sortname: 'companyid',
                    sortorder: "asc", 
                    height: 210,
                    width:600,
                    onSelectRow: function(id)
                                 {
                                    getID = jQuery("#datagrid").jqGrid('getCell', id, 'companyid')
                                 },
                    viewrecords: true,
                    caption:"JQ GRID"
                }); 

JSON格式:

    [
        {
            "company": "test",
            "price": 98,
            "Change": 8,
            "perchange": 8,
            "LastUpdated": "2",
            "companyid": 2
        },
        {
            "company": "test123",
            "price": 1,
            "Change": 1,
            "perchange": 1,
            "LastUpdated": "1",
            "companyid": 3
        },
        {
            "company": "abc",
            "price": 1234,
            "Change": 123,
            "perchange": 1,
            "LastUpdated": "1",
            "companyid": 1
        }
    ]
1个回答

7
首先您需要定义输入数据行的id。每一行(<tr>)的id属性将设置为相应的值。因为您已经有了可以发挥作用的companyid,所以在colModel"companyid"列的属性中添加key:true即可。
直接从服务器加载日期(包括从文件加载)的问题,您可以通过添加描述输入数据格式的jsonReader来解决。因为您使用了loadonce:true,输入数据的totalrecordspage属性将被忽略,您可以使用以下简单形式的jsonReader:
jsonReader: {repeatitems: false, root: function (obj) { return obj; }}

相应的演示在这里
如果您需要从数据数组中加载数据,您发布的代码应该直接起作用(请参见另一个演示)。我想您在解析JSON数据时遇到了其他问题,但您没有发布相应的代码。
有关idkey: true的建议仍然有效。您可以使用localReader:{id:“companyid”}来处理第二种情况,并在jsonReader中替代地使用相同属性id:“companyid”。我个人更喜欢使用key: true,因为代码易于阅读,并且与所使用的读取器无关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接