Dynatree - 如何使父节点显示加号展开符号[+]?

时间:2017-01-25 23:26:19

标签: parent symbols expand dynatree

让Dynatree的节点以惰性模式加载,有没有办法告诉他节点是父节点被“懒惰”加载之前的父节点?

jQuery(document).ready(function() {

    jQuery("#tree").dynatree({
      width:300,
      title: "Lazy Tree",
      keyboard: true,
      persist: true,
      autoCollapse: true,
      clickFolderMode: 3,
      fx: {height: "toggle", duration:300},
    initAjax: {
      type: 'POST',
      url: 'treeNodes.php',
      dataType: 'json',
      data: {key: 0},
    },
    onActivate: function(node) {
      node.toggleExpand();
      // Do this and that when some label is clicked
    },   
    onLazyRead: function (node) {
      node.appendAjax({
      type: 'POST',
      url: "treeNodes.php",
      dataType: 'json',
      data: {key: node.data.key}
      });
       } 
    });
});

在treeNodes.php中的MySQL请求加载节点:

if ($parent==0) { // Load first level nodes
    $req = "SELECT name AS title, id AS 'key', isparent AS isLazy FROM `".$database['database']."`.`".$database['prefix']."categories` WHERE parent=0";
} else {  // Load sub-nodes from the given parent
    $req = "SELECT name AS title, id AS 'key', isparent AS isLazy FROM `".$database['prefix']."categories` WHERE parent=".$_POST['key'];
}

isparent列存储节点是否为父节点。 使用它将isLazy设置为1或0会告诉树显示可扩展节点。但是节点会显示“未知状态”(蓝色菱形图标),直到被点击为止。

我正在寻找与“isParent”节点参数等效的东西,因此一旦显示,每个节点都带有一个[+]符号,如果它有子节点而没有其他符号。

1 个答案:

答案 0 :(得分:0)

  • 如果您知道某个节点没有子节点,请设置"isLazy": false,这样就不会显示任何扩展器图标。
  • 如果你知道它有孩子,你可以直接发送当前请求,这样就会显示[+]
  • 如果你知道它有孩子,但你不想用当前请求发送它们,请设置"isLazy": true,这样就会显示[*]。这表示用户可以在展开时加载更多节点 当然,您可以使用自定义CSS将图标覆盖为[+]

P.S。
请注意,不再主动维护DynaTree。我建议切换到Fancytree