2013-05-31 19 views
1

Я пытаюсь реализовать сетку с группировкой аналогично этому примеру: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/groupgrid.html Здесь данные сгруппированы по колонке «Кухня» и сортировки по этой колонке сортировки групп соответственно. Когда я вставляю код этого примера в проект, который использует 4.2.1, или в редакторе кода на сайте сторонних сайтов ExtJS 4.2.1, вид точно такой же, сортировка работает для столбца «Имя», но это не работа по колонке «Кухня». Удалили ли они сортировку по столбцу группировки в 4.2.1? Если нет, как заставить его работать?сетки группировки и сортировки в ExtJS 4.2.1

ответ

1

Тот же пример приведен в 4.2.1 SDK, и, действительно, сортировка по сгруппированной колонке больше не работает. Звучит как регресс для меня, вы должны уведомить Сенчу.

Edit:

Вот код метода 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' 
      }] 
     } 
Смежные вопросы