如何将JSON数据加载到Jqgrid?

时间:2012-09-05 11:45:34

标签: javascript jquery json jqgrid

我使用以下方法将数据加载到jqgrid中。我无法将 json数据加载到jqgrid中。我将json解析为数组,如 mydata = json。解析(jsondata)。然后我使用数据类型:“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 个答案:

答案 0 :(得分:7)

首先,您需要在输入数据中定义行的id。每行(id)的<tr>属性将在相应的值中设置。由于您已经companyid可以发挥作用,因此将key: true添加到"companyid"colModel列的属性就足够了。

直接从服务器加载日期(包括从文件加载)的问题可以通过添加描述输入数据格式的jsonReader来解决。由于您使用loadonce: truetotalrecords和输入数据的page属性将被忽略,您可以使用以下简单形式的jsonReader:< / p>

jsonReader: {repeatitems: false, root: function (obj) { return obj; }}

相应的演示是here

如果您需要从您发布的数据数组中加载数据,您的代码应直接工作(请参阅another demo)。我想在解析JSON数据时还有其他一些问题,但你没有发布相应的代码。

有关idkey: true的建议仍在进行中。您可以localReader: {id: "companyid"}用于第二种情况,也可以在id: "companyid"中使用同一属性jsonReader。我个人更喜欢使用key: true,因为代码易于阅读,并且与所使用的阅读器无关。