You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS Sencha表格UUID列自定义排序问题求助

修正ExtJS UUID列自定义排序的方案

要实现和数据库一致的排序逻辑(降序时空值/空白在前,无短横线UUID次之,带短横线UUID最后),需要重新编写sortType函数,通过给不同类型的UUID分配排序前缀来控制优先级:

核心思路

通过sortType将原始UUID值转换为带优先级前缀的字符串,ExtJS会基于转换后的值排序:

  • 空值/空白项:分配最高优先级前缀(如'3'),降序时排在最前
  • 无短横线的UUID:分配中间优先级前缀(如'2'),排在空值之后
  • 带短横线的UUID:分配最低优先级前缀(如'1'),排在最后

修正后的代码

替换原uuid字段的sortType函数:

Ext.define('Traccar.model.MyModel', {
    extend: 'Ext.data.Model',
    identifier: 'negative',

    fields: [{
        // 其他字段...
    }, {
        name: 'uuid',
        type: 'string',
        sortType: function(actualValue) {
            // 处理空值、空白或全空格的情况
            if (Ext.isEmpty(actualValue) || actualValue.trim() === '') {
                return '3';
            }
            // 判断是否包含短横线
            if (actualValue.indexOf('-') === -1) {
                // 无短横线的UUID,添加中间优先级前缀
                return '2' + actualValue;
            } else {
                // 带短横线的UUID,添加最低优先级前缀
                return '1' + actualValue;
            }
        }
    }]
});

逻辑说明

  1. 空值处理:使用Ext.isEmpty判断空值,同时处理全空格的情况,返回'3',确保降序时这类值排在最前
  2. 无短横线UUID:添加前缀'2',在排序时会排在'3'之后、'1'之前
  3. 带短横线UUID:添加前缀'1',排序时排在最后
  4. 同一优先级内的UUID会按照原始字符串的自然顺序排序,和数据库的字符串排序逻辑一致

内容的提问来源于stack exchange,提问作者TheOldBlackbeard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:46:57