我有一个显示缺陷的拉力网格。我想添加一个列,显示缺陷已打开的天数。
我知道可以通过在列配置中添加自定义渲染器来实现这一点,但我还想对此列进行排序。不幸的是,渲染器不会更改列的排序。
我想我可以在商店中使用convert()函数来创建一个新的虚拟列(在本例中为openAgeDays),但我不确定如何从构造函数中执行此操作 - 我认为我对storeConfig进行了一些更改?
有没有人有一个如何使用转换函数的例子(假设这是正确的方法)将新的虚拟可排序列添加到拉力赛网格?
this.grid = this.add({
xtype: 'rallygrid',
model: model,
disableColumnMenus: false,
storeConfig: [...]
答案 0 :(得分:1)
如同副本中的答案一样,您可以在列中添加一个doSort:
{dataIndex: 'Parent', name: 'Parent',
doSort: function(state) {
var ds = this.up('grid').getStore();
var field = this.getSortParam();
console.log('field',field);
ds.sort({
property: field,
direction: state,
sorterFn: function(v1, v2){
console.log('v1',v1);
console.log('v2',v2);
if (v1.raw.Parent) {
v1 = v1.raw.Parent.Name;
} else {
v1 = v1.data.Name;
}
if (v2.raw.Parent) {
v2 = v2.raw.Parent.Name;
} else {
v2 = v2.data.Name;
}
return v1.localeCompare(v2);
}
});
},
renderer: function(value, meta, record) {
var ret = record.raw.Parent;
if (ret) {
return ret.Name;
} else {
meta.tdCls = 'invisible';
return record.data.Name;
}
}
},