提问者:小点点

如何使用数据表和服务器端处理进行自定义筛选


我正在使用Datatables在我的Web应用程序中显示表格数据,并将其配置为利用服务器端处理,即通过AJAX查询服务器以查找过滤后的数据。我想根据特定于我的应用程序的附加参数进行筛选,即对应于某些用户选项(例如,通过UI中的复选框)。如何使DataTables将这些附加的筛选器参数传递到服务器?


共2个答案

匿名用户

此答案为1.10.6版本更新

现在可以使用ajax选项完成此操作。

示例代码

 $table.dataTable({
            "ajax":  {
                "url": "example.com/GetData",
                "type": "POST",
                "data": function(d) {
                    d.Foo = "bar";
                    d.Bar = "foo";
                    d.FooBar = "foobarz";
                }
            },
            "serverSide":true,
        });

Foo、Bar和FooBar将作为附加参数作为表单数据发布,以及其他现有参数,如draw、start、length等,因此根据服务器端语言,您可以相应地读取它们。

在现实生活中的scenerio中,您可能有一个搜索按钮和一些输入,您可以通过调用

        var table = $table.DataTable();
        table.ajax.reload(); 

单击按钮时。

匿名用户

解决方案是使用DataTables的fnServerParams选项,该选项允许您添加要在发送到服务器的XMLHttpRequest中发送的自定义参数。例如:

$(document).ready(function() {
  $('#example').dataTable({
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "/IndexXhr",
    "fnServerParams": function (aoData) {
        var includeUsuallyIgnored = $("#include-checkbox").is(":checked");
        aoData.push({name: "includeUsuallyIgnored", value: includeUsuallyIgnored});
    }
  });
});