2013-10-24 2 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) 핸들러 방법 코드 트리에) suppressevents에 (추가 된 새 레코드를 얻는 방법을

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

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); 
} 
를 사용하여