将子节点添加到第一个根节点,在 Guriddo Treegrid 模型中显示为最后一行

问题描述

我使用 Guriddo 库创建了 jqgrid TreeGrid(邻接模型)。 当我将新的子节点添加到第一个根节点时,它在 TreeGrid(在浏览器上)中显示为最后一条记录,而不是在父项下显示为子节点,因为该节点的 id 值高于数据库中的其他记录。展开时如何在父节点下正确显示此类子节点。有关此问题,请参阅下图。

以下是数据库中的记录:

enter image description here

ID   NAME         DESCRIPTION         PARENT_ID    LEVEL      IS_LEAF
==============================================================================

1    MGR          Manager             NULL          0          FALSE
2    DMGR         Deputy              1             1          TRUE
3    HR           HR                  NULL          0          FALSE
4    AHR          HR                  3             1          TRUE
5    SMGR        Sales                1             1          TRUE

以下是网格设置代码

$("#orgStrTable").jqgrid({
    //"hoverrows":false,//"viewrecords":false,//"gridview":true,url: u,//"editurl" : saveUrl,"ExpandColumn":"name",//"sortname":"id",sortable:false,"scrollrows":true,"treeGrid":true,"treedatatype":"json","treeGridModel":"adjacency",//"loadonce":true,//"rowNum":1000,"treeReader":{
        "parent_id_field":"parentId","level_field":"level","leaf_field":"leaf","expanded_field":"expanded","loaded":"loaded","icon_field":"icon"
    },datatype: "json",jsonReader : {
        repeatitems : false
    },colNames:['ID','Name','Desc','Enabled','Parent'],"colModel":[
        {"name" :'id',"index":'id',"hidden":true,"key":true,sortable:false},{"name":'name',"index":'name'},{"name":'description',"index":'description',"search":false,{"name":'active',"index":'active',"search":true,"editable":true,{"name":'parentId',"index":'parentId',sortable:false}
    ],"pager": "#pagingDiv3",multiselect:false
});

jQuery('#orgStrTable').jqgrid('navGrid','#pagingDiv3',{
            "edit":false,"add":false,"del":false,"refresh":true,"view":false,"excel":false,"pdf":false,"csv":false,"columns":false
        },{"drag":true,"resize":true,"cloSEOnescape":true,"dataheight":150},"dataheight":150}
        );

数据库表结构:

CREATE TABLE `org_str` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`description` varchar(500) DEFAULT '',`active` bit(1) NOT NULL DEFAULT b'1',`parent_id` bigint(20) DEFAULT NULL,`level` int(11) NOT NULL,`is_leaf` bit(1) NOT NULL DEFAULT b'1',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据数组:

var dataArray = [
    {"id":"1","name":"MGR","description":"Manager","active":"true","parentId":null,"level":0,"isLeaf":"false","loaded":"true","expanded":"true"},{"id":"2","name":"DMGR","description":"Deputy","parentId":"1","level":1,"isLeaf":"true",{"id":"3","name":"HR","description":"HR",{"id":"4","name":"AHR","parentId":3,{"id":"5","name":"SAL_MGR","description":"Sales Manager","parentId":1,];

解决方法

您的示例运行良好,我认为您使用 addRowData 添加节点而不是 addChildNode 方法。请参阅docs here

您的代码演示是located here

要添加节点 - 选择第一行并添加所需数据。你会看到记录添加到了合适的地方

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...