JQuery数据表:添加columnDefs后无法对列进行排序
JQuery DataTables: Unable to sort column after adding columnDefs
我的Rails应用程序中有一个表,它显示一列日期,以美国长格式编写(Month DD, YYYY)。
使用默认的dataTable,我注意到这些日期字符串是按字母排序的,而不是按日期排序的。单击列标题将按预期的升序或降序对这些字符串排序,但按字母顺序排序。
我试图通过修改我的CoffeeScript来包括columnDefs,使数据表按日期正确排序,如下所示:
$('.scheduled_activities').dataTable(
columnDefs: [ { 'type': 'date', 'targets': 0 } ]
)
修改脚本后,数据表现在按升序显示日期。但是,单击列标题绝对没有任何作用——日期不是按降序排序的。
如何让数据表识别列值作为日期,同时保留通过单击列标题以asc/desc顺序排序的能力?我正在使用JQuery 1.11.2,我想坚持使用一个尽可能少依赖的解决方案,所以使用像moment.js这样的库是最后的手段。谢谢你的帮助。
datatable不能排序我的列,因为列中的日期实际上是通过Rails link_to
helper创建的链接,而不是简单的字符串。
我尝试了不同类型的columnDefs
,但没有一个可以正确地解释一列链接。我突然想到,我可以解除日期字符串的链接,并创建第二列,其中link_to
链接到日期引用的对象。虽然这种方法在技术上满足了日期可排序的要求,同时提供对底层对象的访问,但是在第二列中有一系列链接在美学上是令人不快的,主要是因为我的应用程序中的其他表都没有强迫用户单击次要链接。
碰巧的是,DataTables 1.10+可以利用HTML 5数据属性来提供用于排序的数据,同时在<td>
标记之间显示不同的数据。
<% @schedulable_activities.each do | activity | %>
<tr>
<td>
<%= link_to "#{localize_date(activity.start_date)}", activity_path(activity) %>
</td>
</tr>
<% end %>
新代码:<% @schedulable_activities.each do | activity | %>
<tr>
<td data-order="<%= activity.start_date%>">
<%= link_to "#{localize_date(activity.start_date)}", activity_path(activity) %>
</td>
</tr>
<% end %>
注意<td>
标签中的data-order
属性。
通过这个更改,我可以恢复到对数据表的"普通简"调用,而完全不必依赖columnDefs
:
$ ->
$('.scheduled_activities').dataTable()
现在,通过单击列标题,我得到了一个按日期按升序和降序正确排序的表,以及与日期相关联的对象的直接链接。
选项1: 如果您查看https://www.datatables.net/manual/options,有一个将order设置为true或false的选项,只需将order设置为false。
//Example
$('#example').DataTable( {
ordering: false
} );
在这里,我们禁用了数据表的排序特性默认情况下,您甚至可以通过将'searching'设置为false来禁用搜索
选项2 如果您发现在选项一中禁用了列排序,则将ordering: false行替换为"aaSorting": [],因此它变成:
$('#example').DataTable( {
"aaSorting": []
} );
有关选项2的更多信息,请参见此文档https://legacy.datatables.net/ref#aaSorting
不确定咖啡语法,但在javascript中该语法无效。缺少{}
来定义columnDefs
是
$('.scheduled_activities').dataTable({
columnDefs: [ { 'type': 'date', 'targets': 0 } ]
});
- 对角度数据表中括号内的数字进行排序
- 对损坏的子行进行排序的数据表
- 数据表排序但对行进行分组
- 数据表通过分析一列的值对其进行排序
- 排序数据表
- 基于单选按钮和复选框的数据表排序
- 如何对数据表中的容量列进行排序
- 使用 IP 地址和超链接对数据表进行排序
- Javascript在素数面的数据表中排序后丢失
- AJAX使用jQuery可排序(非表单)发布附加数据
- 禁用jquery数据表中的行重新排序
- 如何在两个不同的选项卡(jQuery数据表)上同步处理可排序表
- 使用J-query数据表,美国日期格式的自定义排序不起作用
- 通过自定义排序 ID 对数据表列进行排序
- (钛工作室)显示带有排序数据的表视图
- 数据表 aa排序未按正确的列排序
- 我无法使用行重新排序替换数据表中的行
- 为什么不能关闭我的数据表的排序
- j查询数据表禁用特定行中的排序
- 我如何排序数据表列,其中包含十进制值与$符号- JQuery数据表