将json父子列表绑定到jstree

时间:2018-12-30 18:17:21

标签: jquery json list parent-child jstree

我有一个嵌套对象(父子对象)列表,并且我使用jstree插件来分层显示它们。

数据库列表:

 ID  Name  ParentId

    1   A     NULL
    2   B     NULL
    5   a1    1
    6   b1    2
    9   a11   5
    10  a12   5
    11  b12   6

将列表及其子元素转换为json:

 [{"children":[{"children":[{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5}],"id":5,"text":"a1","ParentId":1}],"id":1,"text":"A","ParentId":null},{"children":[{"children":[{"children":[],"id":11,"text":"b12","ParentId":6}],"id":6,"text":"b1","ParentId":2}],"id":2,"text":"B","ParentId":null},{"children":[{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5}],"id":5,"text":"a1","ParentId":1},{"children":[{"children":[],"id":11,"text":"b12","ParentId":6}],"id":6,"text":"b1","ParentId":2},{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5},{"children":[],"id":11,"text":"b12","ParentId":6}]

ajax:

  success: function (x) {
     $('#jstree').jstree({
                  'core': {
                        'data': jQuery.parseJSON(x)
                           }
     });  }      

问题是,当json对象首次加载到页面时,jstree显示所有节点,甚至包括其子节点;在同一水平上。只有当我花费父节点时,子节点才能正确地进入其父节点并从第一级消失。 为什么会这样呢?谢谢。

1 个答案:

答案 0 :(得分:0)

尽管JSON数据的结构格式正确,但是分配的'id'值并非唯一。根节点上的某些节点与某些嵌套子节点具有相同的ID。由于jsTree需要唯一的ID,因此会在树数据中造成冲突。如果您可以为整个树中的节点计算唯一的id值,那么它将起作用。