【问题标题】:Dynatree - How to make parent nodes display the plus expand sign [+]?Dynatree - 如何使父节点显示加号展开符号 [+]?
【发布时间】:2017-01-25 23:26:19
【问题描述】:

拥有一个以惰性模式加载节点的 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”节点参数等效的东西,这样,一旦显示,每个节点都会带有一个 [+] 符号(如果它确实有子节点且没有其他符号)。

【问题讨论】:

    标签: parent symbols expand dynatree


    【解决方案1】:
    • 如果您知道某个节点没有子节点,请设置"isLazy": false,这样就不会显示扩展图标。
    • 如果您知道它有孩子,您可以直接将它们与当前请求一起发送,因此会显示 [+]
    • 如果您知道它有孩子,但您不想将它们与当前请求一起发送,请设置"isLazy": true,因此会显示[*]。这表明用户可以期望在展开时加载更多节点。
      当然,您可以使用自定义 CSS 将图标覆盖为 [+]

    附言
    请注意,DynaTree 不再积极维护。我建议切换到Fancytree

    【讨论】:

    • 谢谢。所有叶子的 isLazy 已设置为 false,因为它们在 isparent 列中的值设置为 0。但是尽管叶子没有子节点,但仍显示 [*] 符号。对于所有父类别,isparent 设置为 1,因此 isLazy 设置为 1(即 true)。在用户想要查看其中一些之前,我没有看到加载(子)节点的兴趣。例如,如果有 5 个主要类别和每个类别中的 100 个节点,那么预加载 500 个节点在我看来是荒谬的。我错过了什么? Fancytree 主要是对 Dynatree 的代码重写,可以轻松地从 Dynatree 切换到它吗?
    • 迁移到 Fancytree 非常简单:github.com/mar10/fancytree/wiki/WhatsNew
    • 谢谢。我尝试切换到 Fancytree,在必要时调整路径,但没有奏效。我相信我会在 Dynatree 呆一段时间,因为它适合我的需要。对于 Dynatree,我可以在 onLazyRead 事件处理器的末尾调用一些回调函数来呈现节点图标吗?当 onActivate 发生时,Dynatree/Fancytree 如何渲染节点?谢谢。
    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多