按数据类型而不是来自 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 字符串而不是对象数组