2012-08-06 82 views
1

我有一個DataGrid,以編程方式創建並從ItemFileReadStore加載。 我希望DataGrid的第一列始終按降序排列,並禁用用戶進行排序。任何其他列應該可用於排序作爲第二排序。Dojo DataGrid(EnhancedGrid)排序問題

我不想給用戶這麼強大(複雜和令人困惑)的功能,就像按多列進行排序一樣,因爲我的網格中有太多的列。

因此,實際上它應該是一個用戶可排序的列和另一個「已排序的不可排序」列。

有誰知道這是如何實現的? 謝謝。

回答

1

若要對第一列進行排序,請在創建對象時添加「sortInfo:-1」。

要允許從任何其他列排序網格,但不是第一個,您需要覆蓋函數canSort。 要創建你的網格現在應該看起來像這樣。

dijit.grid.DataGrid({ 
    canSort: function (sortInfo) { 
       if (Math.abs(sortInfo) == 1){ 
        return false; 
       } else { 
        return this.inherited("canSort", arguments); 
       } 
      }, 
    sortInfo: -1, ..... 

如果您需要更多地作爲一列,你需要dojox.grid.enhanced.plugins.NestedSorting排序。 http://dojotoolkit.org/reference-guide/1.7/dojox/grid/EnhancedGrid/plugins/NestedSorting.html

+0

首先,謝謝你的迴應!這段代碼很好用,但是在渲染網格後,當我嘗試對任何列進行排序時,「已排序的不可排序」列變爲「未排序的不可排序」。 很明顯,我應該使用EnhancedGrid和nestedSorting。但正如我前面提到的,網格中有很多列,我不希望用戶與「1,2,3,4 ...」嵌套排序的東西混淆。它應該是簡單的升序/降序排列1列(用戶!!)。 有什麼想法? – 2012-08-07 08:19:42