2016-09-05 5 views
-1

Я не нашел функцию doSort, доступную в EXT 6 относительно столбцов сетки, а также не нашел ее в примечаниях к обновлению. может быть, потому что это частная функция, может кто-нибудь, пожалуйста, скажите мне, что является альтернативой тому, что делал doSort во Ext4?ExtJs 6 doSort метод

Я пытался использовать сортировочные вместо

{ 
    text: 'columnText', 
    dataIndex: 'columnIndex', 
    sorter: me.sort 
} 

sort: function(v1,v2) { 
    ... 
} 

, но я не нашел, как dataIndex л или ColumnName в v1, v2 параметры этого рода. (Это просто модель)

мне нужно пустая ячейка будет снизу после сортировки по возрастанию, пустая ячейка будет сверху после Сортировки по убыванию

Спасибо.

ответ

1

В чем проблема? Вы можете использовать объект модели для получения данных столбца для сортировки. Из документов:

sorter: function(record1, record2) { 
    var name1 = record1.data.columnIndex; 
    var name2 = record2.data.columnIndex; 
    return name1 > name2 ? 1 : (name1 === name2) ? 0 : -1; 
} 

EDIT: Если вы не хотите, чтобы переписать для каждого столбца, то вы можете сделать трюк, как это:

sorter: (function(columnIndex){ return function(v1, v2){ me.sort(v1, v2, columnIndex);} })("column1") 

Теперь вы можете получить имя столбца в качестве 3-го аргумент в вашей функции сортировки.

+0

Я попытался, но это не вызывается, когда я добавляю его в код колонке – prsmax

+0

Если вы разделяете простой пример на скрипке , я могу помочь. – abeyaz

+0

я могу сделать сортировщик: функция (v1, v2) { \t \t \t \t \t \t v1 = v1.data.columnIndex; \t \t \t \t \t \t v2 = v2.data.columnIndex; \t \t \t \t \t \t возвращение v1> v2? -1: (v1 prsmax

0

Вы хотите отсортировать магазины, а не колонку. Посмотрите на функцию doSort в ExtJS 4 на мгновение:

doSort: function(state) { 
    var tablePanel = this.up('tablepanel'), 
     store = tablePanel.store; 

    // If the owning Panel's store is a NodeStore, this means that we are the unlocked side 
    // of a locked TreeGrid. We must use the TreeStore's sort method because we cannot 
    // reorder the NodeStore - that would break the tree. 
    if (tablePanel.ownerLockable && store.isNodeStore) { 
     store = tablePanel.ownerLockable.lockedGrid.store; 
    } 
    store.sort({ 
     property: this.getSortParam(), 
     direction: state 
    }); 
}, 
/** 
* Returns the parameter to sort upon when sorting this header. By default this returns the dataIndex and will not 
* need to be overriden in most cases. 
* @return {String} 
*/ 
getSortParam: function() { 
    return this.dataIndex; 
}, 

Теперь этот код все еще работает в ExtJS 6, так что он больше не является частью системы. Вы можете «вернуть его в рамки» (например, переопределить), и он должен снова работать. Или вы можете использовать соответствующие части непосредственно из события столбца, например.

columns:[{ 
    dataIndex:'ABC', 
    listeners:{ 
     headercontextmenu:function(ct, column) { 
      column.mySortState = column.mySortState=='ASC'?'DESC':'ASC'; 
      ct.up('grid').getStore().sort({ 
       property:column.dataIndex; 
       direction:column.mySortState 
      }); 
     } 
    } 
}] 
+0

привет, headercontextmenu не называется, также как sortchange – prsmax

0

Может быть, вам нужно определить его в модели, как это:

fields: [{ 
     name: "textField", 
     type: 'string', 
     //sortType: 'asInt' 
    }] 
Смежные вопросы