【发布时间】:2012-05-13 19:22:48
【问题描述】:
我正在使用 ExtJs 4.1 框架。我有一个网格,它只显示一列(名称)。网格与具有两个字段(名称和排序顺序)的商店相关联。存储中的字段“名称”与网格的名称列相关联。我想根据商店中 SortOrder 字段中可用的值对名称列进行排序。我该如何实现这样的逻辑。
谢谢
【问题讨论】:
标签: extjs4.1 extjs-grid extjs-stores
我正在使用 ExtJs 4.1 框架。我有一个网格,它只显示一列(名称)。网格与具有两个字段(名称和排序顺序)的商店相关联。存储中的字段“名称”与网格的名称列相关联。我想根据商店中 SortOrder 字段中可用的值对名称列进行排序。我该如何实现这样的逻辑。
谢谢
【问题讨论】:
标签: extjs4.1 extjs-grid extjs-stores
另一种在标题点击时执行此操作的方法。
columns: [
{
header: 'Name',
dataIndex: 'Name',
listeners: {
headerclick: function() {
var store = this.up('grid').getStore();
store.sort({
property: 'SortOrder',
direction: this.sortState
});
}
}
}
]
【讨论】:
还有一个更简单一点的解决方案:
... 列: [{ 标题:'名称', 数据索引:'名称', 可排序:真, 获取排序参数:函数(){ 返回“排序顺序”; } ... }] ...因此,您可以覆盖 getSortParam() 方法(由 doSort() 使用),而不是覆盖 doSort()。
【讨论】:
SortOrder)有自己的列,您可能需要给它一个不同的数据索引并覆盖它的 getSortParam 函数也。虽然不知道为什么......
你的意思是这样的:
...
columns: [{
header: 'Name',
dataIndex: 'Name',
sortable: true,
doSort: function(state){
var ds = this.up('tablepanel').store;
ds.sort({
property: 'SortOrder',
direction: state
});
}
....
}]
【讨论】: