jqGrid自动加载Treegrid问题. .

我遇到了自动加载树网格的问题.
目前我的结构只有2层深.

1
    a
    b
    c 
2
    a

当我单击以展开节点时,网格似乎再次添加根节点的另一个实例以及应根据所选根节点显示的任何子节点.

1
1
    a
    b
    c

以下是在选择根节点之前查看XML:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
    <page>1</page>
    <total>1</total>
    <records>1</records>
    <row>
        <cell>1112</cell>
        <cell>Parent 1</cell>
        <cell>0</cell>
        <cell>NULL</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
</rows>

以下是选择根节点后的XML:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
    <page>1</page>
    <total>1</total>
    <records>1</records>
    <row>
        <cell>1112</cell>
        <cell>Parent 1</cell>
        <cell>0</cell>
        <cell>NULL</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
    <row>
        <cell>5207</cell>
        <cell>Child 1</cell>
        <cell>1</cell>
        <cell>1112</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
</rows>

另外,这是我的配置:

$(document).ready(function(){
    $("#gReport").jqGrid({
        treeGrid: true,
        treeGridModel: 'adjacency',
        ExpandColumn: 'company',
        url: document.forms['frmReport'].elements['gaddr'].value,
        datatype: 'xml',
        mtype: 'GET',
        colNames: ["ID", "Company"],
        colModel: [
            {name: 'id', index: 'id', width: 1, hidden: true, key: true},
            {name: 'company', index: 'company', width: 40, hidden: false, sortable: true}
        ],
        rowNum: -1,
        width: 980,
        height: 'auto',
        pager: false,
        caption: ''
    }),
});

任何帮助将不胜感激.
谢谢.
-克里斯

你描述的行为真的很有趣!问题是子节点“Child 1”未被标记为叶子(< cell> 1112< / cell>是isLeaf值之后的行< cell> false< / cell>).因此,在用户点击“Child 1”后,必须显示其所有子项.由于未在输入中定义“已加载”列的值,因此树网格尝试从服务器加载具有id = 5207的“子1”节点的子节点.所以请求带有附加参数的同一个url

nodeid=5207&parentid=1112&n_level=1

将会完成.因为您的服务器只是忽略参数并获得相同的XML数据,所以可以看到疯狂的图片

(参见演示here).
要解决此问题,您应该将“Child 1”节点标记为叶子:

<row>
    <cell>5207</cell>
    <cell>Child 1</cell>
    <cell>1</cell>
    <cell>1112</cell>
    <cell>true</cell> <!-- here the "false" was changed to "true" -->
    <cell>false</cell>
</row>

并接收以下树格

(参见演示here)或在XML文件中为“加载”列添加“true”值的其他数据:

<row>
    <cell>1112</cell>
    <cell>Parent 1</cell>
    <cell>0</cell>
    <cell>NULL</cell>
    <cell>false</cell> <!-- is leaf -->
    <cell>true</cell>  <!-- should be expanded -->
    <cell>true</cell>  <!-- is loaded -->
</row>
<row>
    <cell>5207</cell>
    <cell>Child 1</cell>
    <cell>1</cell>
    <cell>1112</cell>
    <cell>false</cell> <!-- is leaf -->
    <cell>false</cell> <!-- should be expanded -->
    <cell>true</cell>  <!-- is loaded -->
</row>

并接收网格

(见演示here).我建议您以任何方式为“已加载”列包含“true”值.您获得的额外优势是您可以在加载时扩展任何节点.例如,在最后一个演示中,我在根节点的“展开”列中设置了“true”值,因此它将在加载时展开.

https://stackoverflow.com/questions/5862336/jqgrid-autoloading-treegrid-issue

转载注明原文:jqGrid自动加载Treegrid问题. .