我正在尝试实现网格列UUID的自定义排序。我希望排序反映数据库的排序,例如按降序显示数据,如下所示:
select * from mytable order by uuid desc;
| id | uuid |
|----------+----------------------------------+
| 10094875 | |
| 10093749 | |
| 10094905 | |
| 10094887 | |
| 11268062 | fffffffffffffffffffff |
| 11268010 | fffffffffffffffffffff |
| 11267357 | ffffffffffff |
| 11267356 | fffff-fffff-ffff-ffff-ffff |
| 11267998 | eeda671280c7397c11347cb758e36b38 |
| 10250739 | eeda671280c7397c11347cb758e36b38 |
因此,按降序排列,它应该首先出现空格/空项,然后是不带破折号的UUID,最后是带破折线的UUID。
目前,这些是降序排序时的结果:
这与我想要的很接近,但正如你所看到的,空行显示在底部而不是顶部。这是我的代码:
Ext.define('Traccar.model.MyModel', {
extend: 'Ext.data.Model',
identifier: 'negative',
fields: [{
...
}, {
name: 'uuid',
type: 'string',
sortType: function (actualValue, replaceValue, arg1, arg2) {
if (arg1 != null & arg2 != null) {
if (actualValue === arg1 || actualValue === arg2) {
return replaceValue;
} else
return actualValue;
} else if (arg1 != null) {
if (actualValue === arg1)
return replaceValue;
else
return actualValue;
} else
return actualValue;
}
}, ..
}],
});
有人知道我该怎么修吗?
2条答案
按热度按时间iyfjxgzm1#
您可以在网格列
uuid
上使用自定义排序器功能,以获取所需内容。因为您希望空字符串以ASC和DESC顺序首先出现,所以需要定义特殊规则。分拣机功能接收两个模型(例如model1
和model2
),如果model1
应在model2
之前,则返回-1;如果顺序相同,则返回0;如果e1d 5d1e应位于model2
之后,则返回1。你还必须注意方向属性。函数本身可以如下所示,可以简化,但显示所有情况:
这是一个完整的本地数据示例,您可以复制粘贴并在Sencha Fiddle中运行:
daolsyd02#
无需在模型中定义
sortType
,只需定义字段string
的类型。在您的店铺中,只需添加一个分拣机,如:网格应按预期显示结果。