代码之家  ›  专栏  ›  技术社区  ›  user2913558

如何在ExtJS4中将新记录附加到树节点(带有suppressevents)

  •  0
  • user2913558  · 技术社区  · 11 年前

    我使用ExtJS4 Ext.tree.Panel。

    我必须将节点附加到树网格中,所以我使用了NodeInterface.appendChild()。但是,该方法的工作速度非常慢。可能是因为我的树网格有很多列和渲染器。

    所以,我使用了suppressevents选项。而且这种方法效果很快。但是,我还有一个问题。TreeStore.getNewRecords()不起作用。我在TreeStore中找不到附加到Node的记录。

    1) [Append]按钮的处理程序方法代码

    var selectedNode = selectionModel.getLastSelected();
    for (var i = 0 ; i < len ; i++) {
        selectedNode.appendChild({
            name: 'test name',
            number: i,
            leaf: true
        }, true);       // --> set suppressevents true
    }
    

    2) [保存]按钮的处理程序方法代码

    var treeStore = treeGrid.getStore();
    var records = treeStore.getNewRecords();     // --> records.length == 0
    

    如何将新记录附加到ExtJS4中的树节点(带有suppressevents)?

    1 回复  |  直到 11 年前
        1
  •  0
  •   user2913558    11 年前

    我找到了一种方法。但是,我认为这不是最好的。

    1) 使用方法 “外部数据树.registerNode()”

    var treeStore = treeGrid.getStore();
    var selectedNode = selectionModel.getLastSelected();
    for (var i = 0 ; i < len ; i++) {
        selectedNode.appendChild({
            name: 'test name',
            number: i,
            leaf: true
        }, true);       // --> set suppressevents true
    
        // --> Ext.data.Tree in TreeStore has node hash!
        treeStore.tree.registerNode(newNode, false);
    }