2012-03-23 128 views
1

我使用的是ExtJs 3.4,我有一個TreeGrid (Ext.ux.tree.TreeGrid)列模型。Extjs 3.4 Tree Grid按指定列進行默認排序

當您點擊每一列的標題時,排序與TreeGridLoader帶來的數據非常吻合,但我想要sort by a default specified column。 有沒有辦法做到這一點?我想指定,就像我說的我沒有商店,而是我有一個TreeGridLoader定義。

UPDATE

感謝wes我的問題的最佳(和一般)的解決方案是:

// simulate click on order number and order by this column 
var treeGrid = Ext.getCmp('siteStructureGrid'); 
var index = 0; 
for (var i = 0; i<treeGrid.columns.length; i++){ 
    if (treeGrid.columns[i].id == 'orderNumberColumn'){ 
     index = i; 
    } 
} 
var column = treeGrid.columns[index]; 
treeGrid.fireEvent('headerClick', column); 

回答

2

一種方法可以調用標題的點擊處理程序。通常我會對此表示不滿,但它正在處理一大堆任務,而不是調用一個公共排序方法。 IMO的TreeGrid用戶體驗不太好。

// grab the column and fire the click, since it works for you 
var column = treeGrid.columns[index]; 
treeGrid.fireEvent('headerClick', column); 
+0

是的,這是一個很好的方法,它的工作原理...它有點硬編碼,但它的作品(至少直到我找到另一種解決方案)...謝謝!此外,它會更好,如果它是一種方式來獲得列索引在樹形網格中的ID,而不是每次我添加另一列時,我必須小心增加排序列的索引 – spauny 2012-04-02 08:53:40

+0

我認爲這是一個可悲的後果'TreeGrid'從'TreePanel'擴展而不是'GridPanel'。您不會像'getColumnByID'那樣獲得任何列處理便利。缺乏適當的多繼承模型,對於他們添加到不受支持的擴展中可能只是太多工作。 – wes 2012-04-02 15:32:16

+0

是的,我看到TreeGrid擴展了TreePanel,可悲的是......我用'treeGrid.columns [i] .id'找到了我的列id的索引,用最通用的解決方案更新了我的問題。謝謝! – spauny 2012-04-03 07:15:59