jquery Datatables过滤行

时间:2016-06-07 12:52:11

标签: javascript jquery datatable datatables

您好我有一个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",
        }
        }]
   });
});

我想基于参数过滤来自ajax调用的数据(例如" if(row.State ==' new'){...};&#34 )。我怎样才能做到这一点?数据表是否具有可以传递以过滤每一行的函数?

我真的需要几个表来显示来自相同ajax回调的数据但是处于不同状态(例如" New"表," Old"表等)。如何在不为每个呈现的表一次又一次地请求相同的json数据的情况下执行此操作?理想情况下,我可以将ajax存储在变量中,但是使用异步过程我不确定这将如何解决。

1 个答案:

答案 0 :(得分:2)

您可以使用一个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,
        });

    }
  });
}