2012-03-16 72 views
0

我是新手到EXT和我有重新加載EXT 4樹的問題。我一直在試圖用:Ext4重載樹

Ext.tree.getLoader().load(tree.root); 
Ext.tree.load(tree.root); 
Ext.tree.getRootNode().reload(); 
Ext.tree.TreePanel.root.reload(); 
Ext.data.TreeStore.reload(); 

並沒有什麼幫助,我希望有人能澄清這對我來說,這裏是代碼: 編輯:我加入了完整的代碼,你可以看到一切extOnReady方法中,我已刪除變種變種樹之前,仍然我得到了相同的結果

Ext.QuickTips.init(); 

var store = Ext.create('Ext.data.TreeStore',{ 
    proxy: { 
     type: 'ajax', 
     url: 'url1' 
    }, 
    root: { 
     text: 'TOPP', 
     id: '1', 
     expanded: true 
    }, 
    folderSort: true, 
    sorters: [{ 
     property: 'text', 
     direction: 'ASC' 
    }] 
}); 

tree = Ext.create('Ext.tree.Panel',{ 
    id:'company_tree', 
    store: store, 
    viewConfig: { 
     plugins: { 
      ptype: 'treeviewdragdrop' 
     } 
    }, 
    renderTo: 'tree-div', 
    height: 300, 
    width: 766, 
    title: gettext('Companies'), 
    useArrows: true, 
    dockedItems: [{ 
     xtype: 'toolbar', 
     items: [ { 
      text: gettext('Collapse All'), 
      handler: function(){ 
       tree.collapseAll(); 
      } 
     }] 
    }] 
}); 
var loadingMask = new Ext.LoadMask(Ext.get('tree-div'),{ 
    msg: gettext("Loading...") 
}); 

tree.on('itemmove', function(tree, oldParent, newParent, index, options){ 

    if(confirm(gettext('Are you sure you want to move this company?'))){ 
     loadingMask.show(); 
     Ext.Ajax.request({ 
      scope: this, 
      url: 'url2/', 
      success:function(){ 
       loadingMask.hide(); 
      }, 
      params: { 
       'ajaxAction[moveNode]': '', 
       index: index, 
       nodeid: tree.data.id, 
       parentNodeID: newParent.data.id, 
       oldParentNodeID: oldParent.data.id 
      } 
     }); 
    }else{ 
     Ext.getCmp('company_tree').getStore.load(); 
    } 
}); 

我也試圖通過控制檯來重裝[Ext.getCmp(「company_tree」)getStore.load();]和它的工作。當我嘗試通過代碼返回關於飛行功能

n is null 
[Break On This Error] 

Ext.fly(n.firstChild ? n.firstChild : n).highlight(me.dropHighlightColor); 

回答

2

你真的想直接調用Ext.tree命名空間或Ext.tree.TreePanel類這些方法錯誤?如果是這樣,你真的需要教育自己對象和類之間的差異。

而且不要試圖猜測可能命名的方法。如果你從manual查找它,你會發現在Tree,TreeStore或TreeView上沒有這樣的方法,如reload

你需要調用重新加載樹是TreeStore的load方法:

tree.getStore().load(); 
+0

tree.getStore不是一個函數 [打破這個錯誤] \t tree.getStore()負載(); 我有這個錯誤 我明白樹是對象,而Ext.tree.Panel是一個類。我試圖在對象(樹)上做這件事 – 2012-03-16 15:25:44

+0

當你調用'getStore()'時,你確定'tree'確實是'Ext.tree.Panel'的一個實例嗎?在上面添加'console.log(tree)'來找出'tree'變量的含義。 – 2012-03-16 15:35:34

+0

@SrdjanRadisa如果你在'Ext.onReady'裏面定義'var tree',''''_local_變量在'Ext.onReady'之外的任何地方都不會被定義,這是一些人在第一次啓動時犯的一個錯誤ExtJS的。它會導致像'tree.getStore不是一個函數'這樣的錯誤,因爲未定義的變量'tree'沒有任何函數。你可以通過在'var tree ='中刪除'var'這個詞來使它成爲一個全局變量,或者在你的樹上使用'itemId'或'id'來正確引用它。 – Geronimo 2012-03-17 15:48:30