2013-04-18 4 views
3

Я получил кучу записей, чьи имена, как «ItemType #», и когда они выводятся в виде дерева, они отсортированы неправильно, например, так:Extjs сортировки магазин по буквенно-цифровому полю

  • Пункт 1
  • Пункт 10
  • Пункт 11
  • Пункт 12
  • Пункт 13
  • Пункт 2
  • Пункт 3
  • Пункт 4

Моя модель полей определяются следующим образом, и я сортировкой по «Имя»:

fields: [ 
    { name: 'Id', defaultValue: 0, type: 'int', mapping: 'Id' }, 
    { name: 'Name', defaultValue: '', type: 'string', mapping: 'Name', sortType: Ext.data.SortTypes.asUCString }, 
    { name: 'Type', defaultValue: 0, type: 'int', mapping: 'Type' }, 
    { name: 'CreationDate', type: 'date', mapping: 'CreationDate' } 
], 

Может кто-нибудь мне точку в правильном направлении? Я использую ExtJS 4.0.5

+0

Хорошо, что обратный вызов сортировки работает неправильно, из-за переопределения где-то еще в нашем приложении, но это правильный способ сделать это. Вместо этого мы сортируем sql. – Gallen

ответ

1

Попробуйте позвонить TreeStore.sort с сортировщика конфигурации с a sorting callback. Простой вид поля не будет в этом случае, потому что наивная альфа-сортировка - это не то, что вы хотите. Пример в верхней части Ext.util.Sorter doc показывает, как это сделать в магазине, но вы можете так же легко добавить его в параметр sorters вашей модели.

15

В магазине вы должны установить, как эти данные будут отображаться на сортировщики собственности:

var store = Ext.create('Ext.data.JsonStore', { 
    . 
    . 
    . 
    remoteSort: false, //true for server sorting 
    sorters: [{ 
    property: 'Name', 
    direction: 'DESC' // or 'ASC' 
    }], 
    . 
    . 
    . 

}) 
+0

Я делаю это, но получаю результат, описанный выше. Спасибо, в любом случае. – Gallen

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