我有一个简单的 DataTables 网格,其中包含日期列。我在 JSON 数据集中提供了两个日期值,一个用于显示,另一个是专门设计的,以便 DataTables 可以对其进行排序。我的 Web 应用程序允许用户选择一堆不同的日期格式,因此它需要灵活。
这是 DataTables 通过 sAjaxSource
从 Web 服务器获取的 JSON 数据。
{
Reports : [
{ Date: { Sort = "20101131133000", Display : "11/31/2010 1:30 PM" } },
{ Date: { Sort = "20100912120000", Display : "1200 EST 2010-09-12" } },
]
}
可以很容易地告诉 DataTables 根据 Date.SortValue
属性进行排序,并使用 fnRender() 使
。所以这让我实现了目标的一半。Display
属性对用户可见
var dataTableConfig = {
sAjaxSource: "/getreports",
sAjaxDataProp: "Reports",
aoColumns: [
{ mDataProp: "User" },
{ mDataProp: "Date.Sort",
bSortable: true,
sName: "Date",
bUseRendered: false,
fnRender: function (oObj) {
return oObj.aData[oObj.oSettings.aoColumns[oObj.iDataColumn].sName].Display;
}
}
]
};
这是我的问题。我希望允许用户根据显示的值输入过滤器(使用 DataTables 提供的内置过滤器输入),但是他们不能。
例如。如果用户输入“EST”,他们将得到零结果,因为数据表根据 mDataProp
中指定的值进行过滤,而不是基于从 fnRender
返回的值。
任何人都可以帮我弄清楚如何对日期列进行排序和过滤吗?谢谢。
最佳答案
我相信由于数据表的更新,现有答案已被弃用。 HTML5 支持 DataTables 可用于轻松对列进行排序的属性。特别是data-sort
属性。 (参见https://datatables.net/examples/advanced_init/html5-data-attributes.html)
我可以像这样轻松地对表格进行排序:
<table>
<thead>
<tr>
<td>Name</td>
<td>Age</td>
</tr>
</thead>
<tbody>
<tr>
<td>John Doe</td>
<td data-sort="37">2/1/78 (37 years old)</td>
</tr>
<tr>
<td>Jane Doe</td>
<td data-sort="35">12/1/80 (35 years old)</td>
</tr>
</tbody>
</table>
无论“年龄”列包含数字、符号和字母,DataTables 都会使用“数据排序”属性进行排序。
关于jquery - 如何让 jQuery DataTables 对隐藏值进行排序,但对显示值进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668047/