如何静态加载子网格?

时间:2012-02-06 17:55:51

标签: javascript jqgrid subgrid

我不想使用ajax在我的网格中加载数据。这是一种将所有数据静态加载到主网格和子网格的方法吗?

在jqGrid文档的示例中,需要参数subGridUrl。但我想要这样的东西:

var mydata = [ {
// ... some static code for data creation here
 } ]

并在参数data中使用mydata,但是subGrid没有此参数或其他内容。

1 个答案:

答案 0 :(得分:2)

如果您使用subgrid as grid,则必须在subGridRowExpanded回调中创建新网格。回调得到rowid作为参数。因此,如果您将获得可用作子网格的data参数的数据数组,则可以使用datatype: 'local'定义子网格。

代码架构可以是以下内容:

var mainGridData = [
        {id: 'm1', ...},
        {id: 'm2', ...},
    ],
    subgridData1 = [
        {id: 's11', ...},
        {id: 's12', ...},
    ],
    subgridData2 = [
        {id: 's21', ...},
        {id: 's22', ...},
    ],
    subgridByMainGridId = {
        m1: subgridData1,
        m2: subgridData2
    };

    $('#mainGrid').jqGrid({
        datatype: 'local',
        data: mainGridData,
        ....
        subGrid: true,
        subGridRowExpanded: function(subgridId, rowId) {
            var subgridTableId = subgridId + "_t";

            $("#" + $.jgrid.jqID(subgridId)).html('<table id="' +
                subgridTableId + '"></table>');
            $("#" + $.jgrid.jqID(subgridTableId)).jqGrid({
                datatype: 'local',
                data: subgridByMainGridId[rowId],
                ...
            });
    });