jquery Datatables过滤行

Posted

技术标签:

【中文标题】jquery Datatables过滤行【英文标题】:jquery Datatables filter rows 【发布时间】:2016-10-07 09:22:12 【问题描述】:

您好,我有一个 DataTables DataTable 对象,它通过 ajax 调用请求 json 数据。 json 数据中的每个对象都有一个名为 state 的属性,它可以是多个值之一。最终,我想创建几个(数据)表,每个状态一个,而不是让每个表一次又一次地通过 ajax 请求相同的数据。目前,我还没有设法使单个表过滤掉状态不正确的行,我想先解决这个问题。

DataTable对象定义如下:

$(document).ready(function () 
    var table = $('#example').DataTable(
        data: example,
        ajax: 
            url: " callback_url ",
            dataType: 'json',
            dataSrc: '',
        ,
        createdRow: function (row, data, index) 
        ,
        columns: [
            data: "Type"
        , 
            data: "State",
        
        ]
   );
);

我想根据参数(例如“if (row.State == 'new') ...;”)过滤来自 ajax 调用的数据。我怎样才能做到这一点?数据表是否有可以传递来过滤每一行的函数?

我真的需要几个表来显示来自同一个 ajax 回调但处于不同状态的数据(例如“新”表、“旧”表等)。如何在不为每个呈现的表一次又一次地请求相同的 json 数据的情况下做到这一点?理想情况下,我可以将 ajax 存储在一个变量中,但是对于异步进程,我不确定这将如何解决。

【问题讨论】:

【参考方案1】:

您可以使用一个 ajax 来存储数据,然后创建每个数据表。

例子:

$(document).ready(function () 
  var data = null;
  $.ajax(URL, 
    dataType: 'json',
    success: function(ajaxData)
        data = ajaxData;

      newData = data.filter(function(item) return item.State == "New");
      oldData = data.filter(function(item) return item.State == "Old");

      var newTable = $('#newTable').DataTable(
        data: newData,
        );

      var oldTable = $('#oldTable').DataTable(
        data: newData,
        );

    
  );

【讨论】:

以上是关于jquery Datatables过滤行的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的自定义 jquery 表行过滤与 datatables.net 集成?

jquery dataTables 插件可以在排序/过滤后尊重备用行颜色吗?

如何使用 jQuery DataTables 插件过滤带有特殊字符的结果?

jQuery DataTables 仅过滤特定列

JQuery DataTables - 删除 fnFilter 并显示所有结果

如何使用 jQuery DataTables 过滤某些列