没有单元格的jqGrid colModel和jsonReader

时间:2010-10-04 18:59:14

标签: jquery json jqgrid

以下json和jqgrid选项在我的网格中没有数据。

var grid = jQuery("#grid")[0];
grid.addJSONData({ // the json
    total: 1,
    page: 1,
    records: 10,
    items: [
        { ProductID: '1', Name: 'Coke' },
        { ProductID: '2', Name: 'Pepsi' },
        { ProductID: '3', Name: 'L&P' },
        { ProductID: '4', Name: 'A&B' },
        { ProductID: '5', Name: 'All Star' },
        { ProductID: '6', Name: 'Wai' },
        { ProductID: '7', Name: 'cd' },
        { ProductID: '8', Name: 'LV' },
        { ProductID: '9', Name: 'DD' },
        { ProductID: '10', Name: 'aW' }
    ]
});

// jqGrid options
{
    ...
    colNames: ['ProductID', 'Name'],
    colModel: [{ name: 'ProductID', Label: 'Id' },
               { name: 'Name', Label: 'Name'}],
    jsonReader: {
        root: 'items',
        cell: ''
    },
   ...
}


1 个答案:

答案 0 :(得分:0)

您的数据没有id属性。似乎ProductID扮演了数据ID的角色。因此,您应该在key:true列的定义中使用其他ProductID选项,或在jsonReader中添加“id:ProductID”。

此外,Label属性应写成小写:label。它会替换列标题colNames中的值。如果对所有列使用label属性,则不需要更多定义colNames数组。

如果要使用本地数据填充jqGrid,最有效的方法是使用addRowData函数。在这种情况下,您应该使用localReader而不是jsonReader。它不仅可以用于添加行,还可以用于添加行数据数组。在数组作为数据的情况下,第一个参数应该是id属性的名称。所以你的代码可能如下所示:

var myData = [
        { ProductID: '1', Name: 'Coke' },
        { ProductID: '2', Name: 'Pepsi' },
        { ProductID: '3', Name: 'L&P' },
        { ProductID: '4', Name: 'A&B' },
        { ProductID: '5', Name: 'All Star' },
        { ProductID: '6', Name: 'Wai' },
        { ProductID: '7', Name: 'cd' },
        { ProductID: '8', Name: 'LV' },
        { ProductID: '9', Name: 'DD' },
        { ProductID: '10', Name: 'aW' }
    ];
jQuery("#grid").jqGrid ('addRowData', 'ProductID', myData);

如果所有这些都无济于事,您应该在问题中包含可用于重现问题的完整代码。