Я использую Ext js 6.7 Современный набор инструментов для написания приложения.
Я группирую в [group-by] и сортирую по [group-Update-Time] в ожидаемом случае будет выглядеть следующим образом , (каждый раз, когда я нажимаю [group-Update-Time] на панели сетки, у него не возникает проблем при сортировке)
///////////////////
{
xtype: 'Ext.grid.Grid',
multiColumnSort: false,
grouped: true,
store: "itemStore"
}
////////////////////
{
xtype: "Ext.data.Store",
groupField: "groupBy",
}
////////////////////
store.getGrouper().setSorterFn((item1, item2) => {
if (item1.groupBy == item2.groupBy) {
return 0; // same group
}else{
if (item1.groupUpdateTime > item2.groupUpdateTime) {
return 1;
} else if (item1.groupUpdateTime == item2.groupUpdateTime) {
if (item1.groupBy > item2.groupBy) {
return 1;
} else {
return -1;
}
} else {
return -1;
}
}
})
[name] [group-By] [group-Update-Time]
----group 1----------------------------------------
aaaaa1 1 12:55:22
bbbbb1 1 12:55:22
ccccc1 1 12:55:22
----group 2----------------------------------------
aaaaa2 2 11:44:21
bbbbb2 2 11:44:21
ccccc2 2 11:44:21
Когда придет новое обновление, мой код обновит все элементы, которые имеет тот же [group-By]
// a listener function
onMessage(data){
for(item in groupBy[data.id]){
item.set("value", data.value);
item.set("groupUpdateTime", data.updateTime);
}
}
Однако сетка будет автоматически сортироваться, и иногда будет выглядеть как показано ниже (случайно) некоторые элементы go в неправильном месте группы, если я не нажму [group- Время обновления] на панели сетки снова
[name] [group-By] [group-Update-Time]
----group 1----------------------------------------
aaaaa1 1 12:55:22
bbbbb1 1 12:55:22
ccccc1 1 12:55:22
aaaaa2 2 11:44:21
bbbbb2 2 11:44:21
----group 2----------------------------------------
ccccc2 2 11:44:21