【问题标题】:ExtJs: Tree: how download then select using AJAX calls?ExtJs:树:如何下载然后选择使用 AJAX 调用?
【发布时间】:2010-03-18 09:59:35
【问题描述】:

这是我的目标: - 打开一棵树 - 下载根节点 - 使用 AJAX 自动展开一个特定节点(并在此处循环 n 次)直到我找到一个叶子然后选择叶子

这是我声明树时起作用的函数:

        listeners: {
            load: function(n) {
                console.log('load(n)');
                n.eachChild(
                    function(n) {
                        if ((n.id=='lys/2007') ||
                            (n.id=='lys/2007/08') ||
                            (n.id=='lys/2007/08/29')) {
                            n.expand(false,false);
                        }
                    });
            }
        }

但如果我不知道如何让它更“通用”(几乎完全像 ExtJs documentation)。但它们不会自动跳转到特定节点(即我不希望用户交互)。

任何想法/建议如何做到这一点?

不要犹豫,编辑我的帖子以使其正确英文:)

【问题讨论】:

    标签: javascript json tree extjs


    【解决方案1】:

    如果您已经拥有节点的句柄,请使用node.getPath() 获取它的完整“路径”,然后使用selectPath 以编程方式“选择”它。

    tree.selectPath(node.getPath());
    

    由于您似乎知道确切的路径,您可能只需在树上调用selectPath

    tree.selectPath('lys/2007/08/29'); //adjust to match node.getPath() format
    

    【讨论】:

      【解决方案2】:

      感谢您的回答。 这是有效的代码:我将它移到了 TreeLoader 对象之外,这样:

      var lysTreeLoader = new Ext.tree.TreeLoader({
          dataUrl: 'json/lys.php',
          listeners: {
              load: function(loader,n,response) {
              console.log('Données chargées');
              n.eachChild(
                  function(n) {
                      if ((n.id=='lys/2007') ||
                          (n.id=='lys/2007/08') ||
                          (n.id=='lys/2007/08/29')) {
                          n.expand(false,false);
                      }
                      if (n.id=='lys/2007/08/29/21_14_04') {
                          n.select();
                          console.log(n.id);
                          console.log(n.getPath());
                      }
                  });
              }
          }
      });
      

      然后在树声明中,声明 lysTreeLoader :

      ...blabla...
      id: 'treepanel-labys',
      xtype: 'treepanel',
      width: 400,
      autoScroll: true,
      split: true,
      // use a TreeLoader :
      loader: lysTreeLoader,
      ...blabla...
      

      我只需要使用函数 select(); (在我的问题中没有按预期工作)

      再次感谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-21
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多