0

私は ExtJS4 Ext.tree.Panel を使用しています。

ノードをツリー グリッドに追加する必要があるため、NodeInterface.appendChild() を使用しました。しかし、この方法は非常に遅く動作します。おそらく、私のツリー グリッドには多くの列とレンダラーがあるためです。

そのため、suppressevents オプションを使用しました。そして、この方法は迅速に機能します。しかし、私には別の問題があります。TreeStore.getNewRecords() は機能しません。TreeStore の Node に追加されたレコードが見つかりません。

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

ExtJS4 のツリー ノードに (suppressevents を使用して) 新しいレコードを追加するにはどうすればよいですか?

4

1 に答える 1

0

1つの方法を見つけました。でも、もったいないと思います。

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);
}
于 2013-10-24T23:43:44.860 に答える