【问题标题】:jqGrid Subgrid with "local" Data带有“本地”数据的 jqGrid 子网格
【发布时间】:2012-04-27 04:24:15
【问题描述】:

我正在尝试让我的子网格处理本地数据。但是,当我单击展开时,我只是得到一个加载框,就像网格试图从某个地方提取数据一样。我假设我不需要subGridUrl,因为主网格的数据类型是datatype:'local'。还有什么我应该做的吗?

【问题讨论】:

    标签: jqgrid local subgrid


    【解决方案1】:

    没有使用本地数据定义子网格的直接方法,但您可以使用subGridRowExpanded (Subgrid as Grid) 相对轻松地实现相同的行为。需要做的只是通过网格的 rowid 从一些内部结构中获取子网格的数据。例如,如果您将子网格映射为

    var myGridData = [
            // main grid data
            {id: "m1", col1: "11", col2: "12"},
            {id: "m2", col1: "21", col2: "22"}
        ],
        mySubgrids = {
            m1: [
                // data for subgrid for the id=m1
                {id: "s1a", c1: "aa", c2: "ab", c3: "ac"},
                {id: "s1b", c1: "ba", c2: "bb", c3: "bc"},
                {id: "s1c", c1: "ca", c2: "cb", c3: "cc"}
            ],
            m2: [
                // data for subgrid for the id=m2
                {id: "s2a", c1: "xx", c2: "xy", c3: "xz"}
            ]
        };
    

    subGridRowExpanded 内部,您可以使用以下代码创建子网格:

    $("#grid").jqGrid({
        datatype: 'local',
        data: myGridData,
        colNames: ['Column 1', 'Column 2'],
        colModel: [
            { name: 'col1', width: 200 },
            { name: 'col2', width: 200 }
        ],
        ...
        subGrid: true,
        subGridRowExpanded: function (subgridDivId, rowId) {
            var subgridTableId = subgridDivId + "_t";
            $("#" + subgridDivId).html("<table id='" + subgridTableId + "'></table>");
            $("#" + subgridTableId).jqGrid({
                datatype: 'local',
                data: mySubgrids[rowId],
                colNames: ['Col 1', 'Col 2', 'Col 3'],
                colModel: [
                    { name: 'c1', width: 100 },
                    { name: 'c2', width: 100 },
                    { name: 'c3', width: 100 }
                ],
                ...
            });
        }
    });
    

    The demo 实时显示结果:

    【讨论】:

    • 很好的答案奥列格。我将在我的代码中实现它!我实际上将它与从网格拖放到网格(来自我的另一个 question)结合使用。
    • @oleg 很好的答案,它帮助我解决了一个重大问题,尽管我只能投票一次。 :(
    • @VikasGupta:很高兴能帮到你。不客气!
    • @Oleg in this mySubgrids[rowId], rowId 是父网格和子网格之间的连接?那么模型中的视图呢?父网格行的dialog 中的view 数据也将包含该子网格数据?
    • @CJRamki:我不确定我是否理解你的意思。每个行都需要 不同(正确的)子网格,并且行由唯一的 rowid 标识,这在数据模型中具有某些含义(例如来自数据库的 id)。现在关于视图/模型。 jqGrid 从服务器获取每个 Ajax 的 jqGrid 数据。所以只需要在视图中使用 empty table 并且绑定到数据模型应该只在 URL 中。视图主要是指 带有数据的 HTML 片段。如果 Ajax 数据视图为空,您只需要在 MVC 控制器上执行一些操作即可。
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2015-08-07
    • 2012-11-25
    • 2011-10-28
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多