背景
当我尝试按使用自定义渲染器的列进行排序时,没有任何反应 - 它将排序从 ASC 更改为 DESC 来回更改,但数据的顺序从未改变。我假设这是因为没有定义如何对我使用自定义渲染器操作的数据进行排序,但我似乎找不到向列添加排序器或排序函数的方法。
Goal
我正在制作一个网格,我想按父列排序。我想对其进行排序,使父级出现在其任何子级的上方(父级是汇总,子级是功能)。
Idea
对于功能,请将父项的名称放入父项列中。对于 Rollups,将其自身的 Name 放入父列中,并向其中添加一个类来设置
display: none;
然后,您可以轻松地进行整理,让父母出现在孩子的正上方
Code
{
text: 'Parent',
dataIndex: 'Parent',
renderer: function(value, meta, record) {
var ret = record.raw.Parent;
if (ret) {
return ret.Name;
} else {
meta.tdCls = 'invisible';
return record.data.Name;
}
}
},
对于 Rallygrid 配置,请确保将 RemoteSort 属性(默认情况下为 true)设置为 false。然后,这是该列的配置:
{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;
}
}
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)