【发布时间】:2015-08-29 04:45:49
【问题描述】:
网格控制列基于name 排序,first + ' ' + last 的组合字段。客户希望通过last + ', ' + first 订购。我不允许更改现有代码,只能使用覆盖。
基于网络搜索的结果,我认为使用sortType 转换输入值是侵入性最小的方法。但我不确定如何插入。
我认为sortType 适用于数据字段,所以在initComponent 重载时我可以访问我需要的内容吗?例如,这是我在视图中覆盖以更改渲染的方式:
initComponent: function() {
this.callParent([]);
this.columns[0].renderer =
function(value, metaData, record, rowIdx, colIdx, store, view) {
var result = '';
if (!Ext.isEmpty(record.data) && !Ext.isEmpty(record.data.details)) {
var details = record.data.details;
// value == details.name is 'first last', won't be using that
result = details.last + ', ' + details.first;
}
return result;
};
}
我可以从这里访问details.name 定义以覆盖sortType 吗?会同意这不是最好的方法,因为我必须对name 进行一些解析才能将其拆分,然后将其重新组合在一起。这对于那些有多个名字和/或姓氏的人来说会有问题。
另一种方法是重载doSort,但如果我无法访问details.first 和details.last,它不会比sortType 更好。我看到了一个实现doSort 的例子,它看起来很复杂。有人知道doSort 的一些详细文档吗?
【问题讨论】:
标签: javascript extjs extjs4