2013-10-24 27 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); 
}