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

Datatables file-size插件实现文件大小排序报错求助

我来帮你排查这个DataTables文件大小排序的问题,核心问题出在列配置的语法错误上,你把columnDefs的配置格式混到columns数组里了,导致插件无法正确识别配置。

错误原因分析

你当前的columns数组里直接放了{ "type": "file-size", "targets": 2 },但targets是columnDefs专属的配置项,用来批量指定列,不能直接放在columns的单个列配置里。DataTables无法解析这种混合写法,所以触发了报错。

修正方案

有两种正确的配置方式,选一种适合你的:

方式1:直接在目标列的配置中指定type

把file-size类型直接定义在第三列(索引2,对应你的大小列)的配置对象里:

orderAttachmentsDTO[orderItemID] = $attachmentsTable.DataTable({ 
    destroy:true, 
    data:itemAttachments, 
    columns:[
        orderAttachmentsMap, // 第一列配置
        // 如果有第二列,这里放第二列的配置对象
        { 
            title: ax.L(713), 
            class:'size', 
            data:function(row, type, val, meta) { 
                if (row.file) { 
                    return ax.Utils.fileSizeString(row.file.size); 
                } 
            },
            type: 'file-size' // 在这里指定文件大小类型
        }
    ], 
    autoWidth:false, 
    order: [[ 0, 'asc' ]], 
    paging:false, 
    dom:'ft', 
    searching: false, 
    language: { emptyTable: ax.L(911), zeroRecords: ax.L(911) } 
});

方式2:使用columnDefs单独配置类型

如果需要给多个列统一配置类型,或者想让列配置更清晰,用columnDefs来指定目标列的类型:

orderAttachmentsDTO[orderItemID] = $attachmentsTable.DataTable({ 
    destroy:true, 
    data:itemAttachments, 
    columns:[
        orderAttachmentsMap, // 第一列配置
        // 如果有第二列,这里放第二列的配置对象
        { 
            title: ax.L(713), 
            class:'size', 
            data:function(row, type, val, meta) { 
                if (row.file) { 
                    return ax.Utils.fileSizeString(row.file.size); 
                } 
            }
        }
    ],
    columnDefs: [
        { type: 'file-size', targets: 2 } // 明确指定第三列(索引2)使用file-size类型
    ],
    autoWidth:false, 
    order: [[ 0, 'asc' ]], 
    paging:false, 
    dom:'ft', 
    searching: false, 
    language: { emptyTable: ax.L(911), zeroRecords: ax.L(911) } 
});

额外注意事项

  1. 确保你已经正确引入了DataTables的file-size插件脚本(比如dataTables.fileSize.js),如果遗漏引入,插件功能也会失效。
  2. 你的渲染函数返回的格式化字符串(比如"2.5 MB")完全符合file-size插件的识别格式,插件会自动解析这些字符串并进行正确的数值排序,不需要额外处理原始大小数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:59:14