3

我使用以下方式将数据加载到jqgrid中。我无法将json数据加载到jqgrid中。所以我将json解析为像mydata = json.parse(jsondata)这样的数组。然后我绑定这个数组(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
        }
    ]
4

1 回答 1

7

首先,您需要定义id输入数据中的行。id每行 ( )的属性<tr>将设置在相应的值中。因为您已经拥有companyid可以扮演角色的角色,所以添加key: true到."companyid"colModel

直接从服务器加载日期(包括从文件加载)的问题,您可以通过添加jsonReader描述输入数据的格式来解决。因为您使用loadonce: true,输入数据total的属性将被忽略,您可以使用records以下简单形式:pagejsonReader

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

对应的演示在这里

如果您需要从您发布的数据数组中加载数据,您的代码应该可以直接工作(参见另一个演示)。我想使用在解析JSON数据时还有其他问题,但是您没有发布相应的代码。

关于id和的建议key: true仍在发生。您可以交替使用localReader: {id: "companyid"}第二种情况和相同的属性id: "companyid"jsonReader我个人更喜欢使用key: true,因为代码易于阅读并且独立于所使用的阅读器。

于 2012-09-05T12:19:30.927 回答