Extjs按字母数字字段排序存储

时间:2013-04-18 21:58:21

标签: javascript extjs extjs4

我有一堆名称类似于“Itemtype#”的记录,当它们输出到树状视图中时,它们排序不正确,如下所示:

  • 第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

2 个答案:

答案 0 :(得分:16)

在商店中,您必须设置分拣机属性显示数据的方式:

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

})

答案 1 :(得分:1)

尝试使用TreeStore.sort的分拣机配置调用a sorting callback。在这种情况下,简单的字段排序不会做,因为天真的alpha排序不是你想要的。 Ext.util.Sorter doc顶部的示例显示了如何在商店中执行此操作,但您可以轻松地将其添加到模型的sorters参数中。