jquery - 如何让 jQuery DataTables 对隐藏值进行排序,但对显示值进行搜索?

标签 jquery jquery-plugins datatables

我有一个简单的 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/

相关文章:

javascript - 如何使用jquery使div可滚动

javascript - 使用 css 显示或隐藏表中的元素,javascript 每次都将数据表滚动到顶部

jquery - 没有嵌套的 DataTables 详细信息行

javascript - jQuery 回调卡住

javascript - 根据 API 的响应异步更新进度条

javascript - 如何动态地将焦点设置到ui中的下一个文本框:repeat

jquery-plugins - 如何使用 Cloudinary jQuery 插件直接从页面上传图像?

javascript - 记录较少时如何隐藏页码

javascript - 测试 DOM 中元素的最佳方法是什么

javascript - 使用 Ajax 从不同输入上传多个文件