如何按 DataTables 中的隐藏列排序?

Posted

技术标签:

【中文标题】如何按 DataTables 中的隐藏列排序?【英文标题】:How do I sort by a hidden column in DataTables? 【发布时间】:2016-10-30 22:59:29 【问题描述】:

当我将 DataTables 应用于以下内容时:

<td class="years"><?php $years."-years" ?></td>
<td class="..." ...
... other <td> ...

我的表格显示如下:

10-years ... ... ...
10-years ... ... ...
5-years  ... ... ...
7-years  ... ... ...
9-years  ... ... ...

因为字母顺序。我需要10-years 出现在底部。为此,我在&lt;td class="years"&gt;&lt;?php $years."-years" ?&gt;&lt;/td&gt; 之后添加了&lt;td class="hidden"&gt;&lt;?php $years ?&gt;&lt;/td&gt;,并将"order": [ 1, 'asc' ] 添加到数据表初始化中:

$(".table-rates").DataTable( 
   "order": [ 1, 'asc' ]
);

之后它停止工作并开始在控制台中报告错误:“无法读取未定义的属性'mData'”。

谁能解释我如何按数据表中的隐藏列排序?我在网上查了一下,但解决方案对我不起作用。更糟糕的是,语法非常混乱且难以理解。任何帮助,将不胜感激。谢谢!

【问题讨论】:

你能添加你得到的错误吗? "无法读取未定义的属性 'mData'" 【参考方案1】:

不需要添加其他列,可以使用数据表的data-attributes,在你的html代码中添加data-order

<td class="years" data-order="<?php $years ?>"><?php $years."-years" ?></td>

还有你的代码 JS:

$(document).ready(function() 
    $('#example').DataTable(
        "order": [ 0, 'asc' ]
    );
);

结果: https://jsfiddle.net/cmedina/7kfmyw6x/69/

【讨论】:

这就像一个魅力。我必须提出解决方案。

以上是关于如何按 DataTables 中的隐藏列排序?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTables:如何按特定列排序? [关闭]

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

DataTables 时刻按自定义格式排序

如何仅在页面加载时禁用 DataTables 中的排序?

自定义按值的日期部分对 DataTables 列进行排序

来自 Ajax 源的 DataTables 按数据顺序排序并显示格式化日期