按数据类型而不是来自 AJAX 的格式化字符串对 DataTables 中的列进行排序

Posted

技术标签:

【中文标题】按数据类型而不是来自 AJAX 的格式化字符串对 DataTables 中的列进行排序【英文标题】:Sort columns in DataTables by data type instead of formatted string from AJAX 【发布时间】:2020-07-07 13:28:24 【问题描述】:

当我们在服务器端构建 html 并应用 DataTables 时,我们可以将原始数据放在data-sort 属性中,并将格式化值放在单元格的文本中,它会正确地对列进行排序。

我很需要,但数据以 json 格式出现,我将其添加为 DataTable(data: object)

我正在使用 columnDefs-render 来格式化这些值,并且我们知道 DataTables 使用呈现的字符串而不是原始数据进行排序。

我需要一些 columnDefs 设置来提供用于排序的原始数据,但找不到方法。有什么想法吗?

【问题讨论】:

您可以使用 jQuery 添加data-sort 作为属性。如果这听起来不是一个可行的选择,请更新您的问题并向我们展示您的数据表是如何定义/设置的。 在哪里可以做到?你能举个例子吗? 您可以研究如何使用 jQuery 添加数据属性。 【参考方案1】:

我想通了!

1) 在 Web 服务响应中,确保有一个字段具有正确的数据类型以用于排序。如果(不是最佳实践)数据在应用程序中被格式化为字符串,而不是通过 DataTables,请为格式化的字符串添加一个字段,为正确的数据类型添加另一个字段

2) 在 DataTables 设置中,columns 区域,像往常一样设置链接到正确字段的正确列

3) 如果 DataTables 负责格式化,像往常一样,添加 render 设置

4) 回到columns 区域,在列表末尾添加一个新列,链接到正确的数据类型字段,并在其中添加visible: false,这样该列将可用于其他设置和要使用的功能,但不会在视觉上呈现

5) 在columnDefs 区域,添加 "orderData": 8, "targets": 5 ,这样当第 5 列被排序时,DataTables 将使用第 8 列来代替,第 8 列是在 (4) 上添加的新的不可见列

【讨论】:

以上是关于按数据类型而不是来自 AJAX 的格式化字符串对 DataTables 中的列进行排序的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Ajax 调用返回 JSON 字符串而不是对象数组

迭代JSON给出字符,而不是元素

来自 ajax 的 Web api Post 调用失败

请求ajax失败或者不执行的原因

是否可以强制打字稿使用来自definitelyTyped 的类型而不是本机库类型?

linux bash按'yymmdd'而不是'ddmmyy'列格式对文本文件进行排序,然后按时间排序,然后删除重复项