在数据排序处理中,分为前端排序和后端排序。
后端排序就是主要指sql中的order by语法了,而如果想在前端排序,在ExtJS中就要用到sort。
简单的排序
- 在配置store时,可以设置某个field字段
例如:
store:{
fields: ['firstName', 'level'],
sorters: 'level',
data: [
{ firstName: 'Mitch', level: 9000},
{ firstName: 'Seth', level: 42},
{ firstName: 'Fred', level: 510},
]
}
这样就会根据 level这个字段进行升序(未设置direction,默认升序)
而如果想要降序,就用
sorters:[
{
property:'field名',direction:'desc'
}
]
store:{
fields: ['firstName', 'level'],
sorters: [{
property: 'level',
direction: 'desc'
}],
data: [
{ firstName: 'Mitch', level: 9000},
{ firstName: 'Seth', level: 42},
{ firstName: 'Fred', level: 510},
]
}
多个条件排序就是
sorters:[
{
property:'field名1',direction:'desc'
},
{
property:'field名2',direction:'asc'
},
{
property:'field名n',direction:'asc'
}
]
自定义排序
有时,store内置的排序,并不能满足要求,那我们就要用到sortFn
例如:
sorters:[
{
sorterFn: function(record1, record2){
return (record1.age > record2.age) ? 1 : (person1.age === record2.age ? 0 : -1);
},
direction:'desc'
}
]
动态排序
1.获取store对象
2.获取store的排序对象sorter,
3.为sorter赋新值
var sorter = store对象.getSorters();
sorter.clear();//未防止叠加排序 清空 若有其他需求可以不清空
var newSorter=[{
property:'age',
direction:'asc'
}];//创建排序对象
store对象.setSorter(newSorter);//更新store排序