【问题标题】:Datatables multi-select Dropdown Filter Update on filter change数据表多选下拉过滤器更新过滤器更改
【发布时间】:2014-05-09 07:54:10
【问题描述】:

我正在使用数据表 1.10

当我在我的 Datatable 中选择一个过滤器时,我正在尝试根据生成的结果集更新我的过滤器。

这是我的代码。

table = $('#example').DataTable({
    "bSort": false,
    "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
        $("#example thead td ").each(function (i) {
            if (i > 1) {
                select = $('<select class="form-control"><option value=""></option></select>')
                    .appendTo($(this).empty())
                    .on('change', function () {
                        table.column(i)
                            .search($(this).val())
                            .draw();
                    });
            }

            table.column(i).data().unique().sort().each(function (d, j) {
                if (i > 1 && d !== "") {
                    select.append('<option value="' + d + '">' + d + '</option>')
                }
            });
        });
    }
});

我在上面的代码中要做的是在数据表函数的回调中添加下拉过滤器代码。

这样每次数据表运行时我都应该得到新的过滤器。

数据表中是否有任何选项可以做到这一点?

【问题讨论】:

  • 您的最后一行代码不完整。请修复它/删除它/添加其余部分。
  • 其实我是在尝试通过函数调用,很抱歉我是新手。

标签: javascript jquery datatables jquery-datatables


【解决方案1】:

您似乎在 DT v 1.10 上使用 DT 1.9 API 请参考新版DThttp://www.datatables.net/reference/

如果我理解正确,您想在应用任何其他过滤器时更改邻居过滤器(例如将“无数据”选项标记为灰色)。如果这是正确的,请坚持 drawCallback

您在代码中使用的逻辑似乎与解决此问题的方式很接近,我不知道任何 DT 支持的创建组合框列过滤器和更新它们的方法,所以是的,每次绘制时,检查过滤器,然后更新/重新创建组合。

如果您不追求 DT 1.10,here is working plugin 为 Dylan Kuhn 的 DT 1.9。

【讨论】:

  • 感谢您的快速和出色的响应,DT1.9 插件非常棒,我需要的只是一件小事,如何将这些过滤器放置在数据表中的标题下方?另外如何将选定的过滤器值放在表格上方?
  • 如果您想将组合直接放入标题单元格中,恐怕您必须更改插件代码github.com/cyberhobo/ColumnFilterWidgets,或者为每个组合添加一个 hacky JQ run-through表头单元格,其中推入相应的组合框。该插件的作者提到这是一个小部件位于一个单独的元素中。如果您决定更改插件源代码,我的问题是第 115 行是负责组合放置的地方github.com/cyberhobo/ColumnFilterWidgets/blob/master/media/js/…。顺便说一句,upvote 给予声誉;)
  • 非常感谢您提供的所有信息,这很有帮助。我正在寻找用于过滤器重置的重置按钮的另一个问题 ColumnFilterWidgets 中是否有任何选项?
  • 不,不要认为这个插件是可能的。您可以在第 193 - 210 行看到单个选择删除是如何工作的。但我认为添加清除选项并不容易,您需要将其添加到包装对象 - ColumnFilterWidgets 中,而不是运行 .aoWidgets 并清除每个列组合而不是 table.fnFilter.
  • 嗨,在重置过滤器方面需要帮助,这里是链接link1link2
猜你喜欢
  • 2021-10-02
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多