使用 extjs 6.2 中的值在商店中分组
Grouping in store with values in extjs 6.2
我正在尝试按部门名称对我的商店进行分组。部门名称也包含一些空值。当我尝试使用排序功能进行分组时,它的结果是同名的多个组。
有关详细信息,请参阅此 fiddel。我没有明白我做错了什么。请指教。
你的 sorterFn 是错误的。
The sorterFn has to return three different values:
1
如果第二个参数严格大于第一个参数。
-1
如果第二个参数严格小于第一个。
0
如果两个参数是同一组。
你的 sorterFn 永远不会 returns 0
。试试这个:
sorterFn: function(a, b) {
if(a.get('department')=="Management" && b.get('department')=="Management") return 0;
if(a.get('department')=="Management") return 1;
if(b.get('department')=="Management") return -1;
if(a.get('department') < b.get('department')) return 1;
if(a.get('department') > b.get('department')) return -1;
return 0;
},
此外,您的transform
功能没有用。它仅从您覆盖的原始 sorterFn
调用。如果您愿意,您将不得不考虑 sorterFn 中的空值。 (但是,通常人们会把 "Others" 这样的后备类别放在最后,而不是在 "IT" 和 "Sales" 之间。)
此外,要在 header 行中写入部门,您必须覆盖 groupHeaderTpl
模板,例如
groupHeaderTpl: [
'<tpl if=\'name\'>{name}<tpl else>Others</tpl>'
]
我正在尝试按部门名称对我的商店进行分组。部门名称也包含一些空值。当我尝试使用排序功能进行分组时,它的结果是同名的多个组。
有关详细信息,请参阅此 fiddel。我没有明白我做错了什么。请指教。
你的 sorterFn 是错误的。
The sorterFn has to return three different values:
1
如果第二个参数严格大于第一个参数。-1
如果第二个参数严格小于第一个。0
如果两个参数是同一组。
你的 sorterFn 永远不会 returns 0
。试试这个:
sorterFn: function(a, b) {
if(a.get('department')=="Management" && b.get('department')=="Management") return 0;
if(a.get('department')=="Management") return 1;
if(b.get('department')=="Management") return -1;
if(a.get('department') < b.get('department')) return 1;
if(a.get('department') > b.get('department')) return -1;
return 0;
},
此外,您的transform
功能没有用。它仅从您覆盖的原始 sorterFn
调用。如果您愿意,您将不得不考虑 sorterFn 中的空值。 (但是,通常人们会把 "Others" 这样的后备类别放在最后,而不是在 "IT" 和 "Sales" 之间。)
此外,要在 header 行中写入部门,您必须覆盖 groupHeaderTpl
模板,例如
groupHeaderTpl: [
'<tpl if=\'name\'>{name}<tpl else>Others</tpl>'
]