【问题标题】:DataTables and columnDefs Rendering DataDataTables 和 columnDefs 渲染数据
【发布时间】:2018-11-15 14:23:46
【问题描述】:

我正在使用数据表 1.10.19,我想根据表格单元格的内容过滤数据。

我正在使用columnDefs 选项来更改返回数据的内容。

我正在使用this php script 来检索数据。

我的代码是;

$('#example').DataTable({
processing : true,
serverSide : true,
ajax: url": '/server_processing.php',
columnDefs: [{
    targets: 5, // row 6 in the html table
    "render": function(data, type, row) {
        if (row[5] == 0) {
            data = 'rejected';
        }
        return data;
    },
}]
});

这成功显示了一个表格,当从数据库返回0 时,第6 列中的rejected。但是数据表不允许我过滤 word rejected。我得到No matching records found,但是我可以过滤整数0

我认为数据表应该过滤表中显示的内容?

感谢任何建议。

【问题讨论】:

  • 你的数据表中有serverSide: true 选项吗?

标签: javascript mysql arrays datatables


【解决方案1】:

您启用了服务器端处理模式 (serverSide: true),这意味着您必须自己在服务器端执行搜索。这可以手动完成,也可以使用辅助类/库来完成。

例如,对于 PHP,使用 DataTables 发行版中提供的 SSP 帮助程序类 (ssp.class.php)。对于 Laravel 框架,有Laravel DataTables

DataTables 插件仅在客户端处理模式下为您执行搜索。

【讨论】:

  • 哦,好的,在您的回答中您提到了ssp.class.php - 这正是我正在使用的。我没有使用框架,标准 PHP。为了达到预期的效果,我必须对代码进行哪些更改?
  • 这需要调整 ssp.class.php 以允许原始查询或可能使用调整后的 ssp class。之后我认为你需要在准备结果时使用像CASE WHEN id=1 THEN 'accepted' WHEN id=2 THEN 'rejected' ELSE '' END AS title 这样的SQL 子句。当我有更多时间了解更多详细信息时,我会更新答案。
  • 谢谢,不胜感激!我的印象是数据表根据客户端表格内容过滤结果?我的数据库返回1/0,但我正在渲染approved / rejected
【解决方案2】:

很简单,我要做的就是设置这个;

serverSide: false

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2014-10-08
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多