【问题标题】:How do we get index of select node in a extjs tree?我们如何在 extjs 树中获取选择节点的索引?
【发布时间】:2012-03-08 08:41:11
【问题描述】:

在我的页面上,我有 2 棵树。 页面上有表格。一棵树显示在页面上,另一棵树显示在表单内。 我创建了如下树:

var myTree1 = Ext.create('Ext.tree.Panel', { store: store, //store是硬编码的json树数据 …… });

类似地 myTree2 是用不同的商店声明的。它显示在表单中。 当我在 myTree2 上的任何节点上选择并单击创建按钮时,我必须能够在 myTree1 内的同一索引处添加一个新的叶节点。

我需要的帮助是:
1.如何获取选中节点的索引。
2.如何去myTree1中的索引,应该等于选择的索引myTree2。
3. 如何在特定索引处添加叶子节点。

【问题讨论】:

    标签: javascript html css treeview extjs4


    【解决方案1】:

    供参考:
    Ext JS 4 TreePanel documentation
    Ext JS 4 NodeInterface documentation

    1. select 事件同时提供索引和记录。如果您需要对其进行一般访问,myTree1.getSelectionModel().getSelection() 将返回一个记录数组,然后您可以检查存储以获取索引。

    2. 我假设您想比较两棵树上的选定记录。给定 #1 中的示例,试试这个:

      var tree1rec = myTree1.getSelectionModel().getSelection[0],
          tree2rec = myTree2.getSelectionModel().getSelection[0];
      // Perform comparison logic here
      // Note that if you're using two different stores, you can't
      // just do an equality test. You'll probably have to compare
      // individual store values.
      
    3. 节点是相对于树上现有节点插入的。所以如果你有一个按钮点击事件:

      function onButtonClick(button, eOpts) {
          var rec = myTree1.getSelectionModel().getSelection[0];
          if (rec) {
              var childNode = rec.createNode(/* some object here */);
              rec.appendChild(childNode);
          }
      }
      

    详细信息会因您的实际数据而异,但这是一般模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多