2013-05-31 44 views
1

我嘗試使用類似於此示例的分組來實現網格: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/groupgrid.html 此處數據按列「Cuisine」分組,並按此列按相應排序。 當我把這個例子的代碼粘貼到一個使用4.2.1的項目中,或者在ExtJS 4.2.1 docs站點的代碼編輯器中時,視圖是完全一樣的,對列「Name」的排序工作是一樣的,但是它沒有按專欄「料理」工作。 他們是否通過4.2.1中的分組列刪除排序?如果沒有,如何使它工作?ExtJS 4.2.1中的網格分組和排序

回答

1

4.2.1 SDK中存在同樣的例子,實際上按分組列的排序不再有效。聽起來像是迴歸我,你應該通知Sencha。

編輯:

這已經改變的方法Ext.data.Store#sort的代碼。恢復以前的版本修復行爲(見我的意見找到經修改的線):

Ext.define(null, { 
    override: 'Ext.data.Store' 

    ,sort: function(sorters, direction, where, doSort) { 
     var me = this, 
      sorter, 
      newSorters; 

     if (Ext.isArray(sorters)) { 
      doSort = where; 
      where = direction; 
      newSorters = sorters; 
     } 
     else if (Ext.isObject(sorters)) { 
      doSort = where; 
      where = direction; 
      newSorters = [sorters]; 
     } 
     else if (Ext.isString(sorters)) { 
      sorter = me.sorters.get(sorters); 

      if (!sorter) { 
       sorter = { 
        property : sorters, 
        direction: direction 
       }; 
       newSorters = [sorter]; 
      } 
      else if (direction === undefined) { 
       sorter.toggle(); 
      } 
      else { 
       sorter.setDirection(direction); 
      } 
     } 

     if (newSorters && newSorters.length) { 
      newSorters = me.decodeSorters(newSorters); 
      if (Ext.isString(where)) { 
       if (where === 'prepend') { 
        // <code from 4.2.1> 
        // me.sorters.insert(0, newSorters); 
        // </code from 4.2.1> 

        // <code from 4.2.0> 
        sorters = me.sorters.clone().items; 

        me.sorters.clear(); 
        me.sorters.addAll(newSorters); 
        me.sorters.addAll(sorters); 
        // </code from 4.2.0> 
       } 
       else { 
        me.sorters.addAll(newSorters); 
       } 
      } 
      else { 
       me.sorters.clear(); 
       me.sorters.addAll(newSorters); 
      } 
     } 

     if (doSort !== false) { 
      me.fireEvent('beforesort', me, newSorters); 
      me.onBeforeSort(newSorters); 

      sorters = me.sorters.items; 
      if (sorters.length) { 

       me.doSort(me.generateComparator()); 
      } 
     } 
    } 
}); 
+1

我試過你的解決方案,它的工作原理。謝謝。 – Alexey

1

設置sortable: true無論是在defaults配置爲分組列或作爲孩子自己列一個配置。例如

{ 
      // NOTE: these two are grouped columns 
      text: 'Close', 
      columns: [{ 
       text: 'Value', 
       minWidth: 100, 
       flex: 100, 
       sortable: true, 
       dataIndex: 'ValueHeld_End' 
      }, { 
       text: 'Total', 
       minWidth: 110, 
       flex: 110, 
       sortable: true, 
       dataIndex: 'TotalPnL' 
      }] 
     }