2015-05-27 3 views
0

On ExtJs 4.2.2 Мне нужно переопределить сортировщик по умолчанию из некоторого столбца и сделать его сортировкой по абсолютным значениям (Math.abs).Extjs 4.2.2 - Логика сортировщика по умолчанию вместо пользовательского сортировщика

Когда я его отлаживаю, я попадаю в doSort() и получаю правильное хранилище & direction (asc, desc), но по какой-то причине он не выполняет r sororFn() - и запускает сортировщик по умолчанию (я его знаю вызывает ничего не печатается на консоль, а поведение клиента по умолчанию)

{ 
      itemId: someId, 
      //header: 'Abs. Change', 


      menuDisabled: false, 
      dataIndex: 'AbsChange', 

      sortable: true, 
      renderer: this.absChangeLabelRenderer, 
      width: 95, 
      align: 'right', 

      doSort: function (state) { 
       debugger; 
       var ds = this.up('tablepanel').store; 
       var field = this.getSortParam(); 
       ds.sort({ 
        property: field, 
        direction: state, 
        sorterFn: function (v1, v2) { 
         debugger; 
         console.log("value1 is {0}, value2 is {1}", v1, v2); 

         debugger; 
         v1 = Math.abs(v1.get(field)); 
         v2 = Math.abs(v2.get(field)); 
         // transform v1 and v2 here 
         return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0); 
        } 
       }); 
      }    
     } 

ответ

1

Вы должны использовать конфигурацию sortType в определении поля вашей модели, то есть функция, которая возвращает значение, используемое для сортировки.

конфигурации

Пример:

fields: [ 
    // ... other fields ... 
    { 
     name: 'AbsChange', 
     sortType: function(value) { 
      return Math.abs(value); 
     } 
    } 
] 
+0

Попробую, что завтра и обновление :) – user1025852

+0

мой вопрос в том, что мой магазин уже был сортировщик, который переопределен мой код выше :) - в любом случае этот ответ опрятен все равно – user1025852

Смежные вопросы