1

extjs内にこれを行う方法がある場合、ソートされたツリーストアにアイテムを挿入する方法を知りたいです。次に、ツリーパネルにいくつかのノードが既に存在する可能性がありますが、アイテムをソートしてツリーパネルに表示したいと考えています。

それで、その質問は、ツリーパネルに、ストア内にあるものに基づいて表示されているものをどのようにリロードさせるかということです。はっきりさせておきますが、データソースからストアをリロードしたくありません。パネルをリロードして、ストア内に含まれるものを反映したいと考えています。これについて最善の方法は何ですか?

4

1 に答える 1

0

これを行うための実際のデフォルトの方法はありません。あなたがしなければならないことは、ツリーと同じモデルを使用するページに空のストアを作成することです。これは次のように非常に簡単です。

var mySortStore = Ext.create("Ext.data.Store", {
    model: "MyTreeStore",
    data:  []
});

次に、ノードをツリーに追加するときに、代わりに次の関数を使用します。

function addNodeSorted(node, childToBeAdded){
    //clear the store from previous additions
    mySortStore.removeAll();
    //remove old sorters if they are dynamically changing
    mySortStore.sort();
    //add the node into the tree
    node.appendChild(childToBeAdded);
    var cn = node.childNodes,
        n;

    //remove all nodes from their parent and add them to the store
    while ((n = cn[0])) {
        mySortStore.add(node.removeChild(n));
    }

    //then sort the store like you would normally do in extjs, what kind of sorting you want is up to you
    mySortStore.sort('height', 'ASC');//this is just an example

    //now add them back into the tree in correct order
    mySortStore.each(function(record){
        node.appendChild(record);
    });
}
于 2012-06-22T19:27:54.660 に答える