2012-08-06 113 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