2013-10-24 30 views
0

我使用ExtJS4 Ext.tree.Panel。如何获取ExtJS4中树节点的新记录(包含suppressevents)

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

所以,我使用了suppressevents选项。该方法运行速度快。但是,我还有一个问题。 TreeStore.getNewRecords()不起作用。我无法在TreeStore中找到附加到节点的记录。

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

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 

如何获得追加新记录(含suppressevents),以树ExtJS4中的节点?

回答

0

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

1)使用方法“Ext.data.Tree.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); 
}