1

こんにちは、私は Ext バージョンを使用しています: 4.2.0.663 ツリーパネル
にデータをリロードしようとしていますが、2 つの問題があります:

*1 番目の問題は、autoLoad を無効にできないこと
です ---- 1 番目の問題は修正されました - store.root.expandedfalseに設定する必要があります----

*2番目の問題は、 「treeview.store.load();」を作成しようとしているときです。データをリロードしますが、子が見つからず、クリックして親を折りたたもうとすると、次のエラーが発生します:
Uncaught TypeError: Cannot call method 'insertSibling' of null
ext-all-dev.js:158815

これは私がツリーパネルを作成する方法です:

{
xtype:'treepanel',
region:'west',
width:200,
dockedItems:[
    {
        xtype: 'toolbar',
        dock: 'top',
        id: 'msgToolbar',
        style: 'font-weight:bold',
        items: [
            {
                xtype: 'button',
                text:'Add new tab',
                iconCls:'button-add'
            }
        ]
    }
],
store: Ext.create('Ext.data.TreeStore', {
    autoLoad: false,
    proxy: {
        type: 'ajax',
        url: 'path to controller',
        extraParams : {
            launch:'functionName'
        }
    },
    root: {
        text: 'Tabs',
        expanded: true
    },
    folderSort: true,
    sorters: [{
        property: 'text',
        direction: 'ASC'
    }]
})

}

ページをリロードすると、treepanel は自動的にデータをロードし (autoLoad:false も含む)、すべて問題ありませんが、treepanel.store().load() を作成しようとすると、2 番目のバグが発生します。
どちらの場合も、php から返されるデータはまったく同じです (ヘッダーも - つまり、2 つの同一の要求)。

4

1 に答える 1

2

子ノードをリロードする前に、ルート ノードで折りたたむ必要があるため、現時点ではこれを行っており、すべて問題ありません。

treepanel.collapseAll(function(){
    treepanel.store.proxy.extraParams.record_id = record.get('record_id');
    treepanel.store.load({
        callback: function(records, operation, success) {
            treepanel.expandAll();
        }                               
    });
});

「展開/折りたたみ」アニメーションを表示したくない場合は、ツリーパネルでenableAnimations:falseを設定できます。

于 2013-07-10T07:00:38.590 に答える