【问题标题】:jQuery Datatables filter Column containing dropdowns on text not value.jQuery Datatables 过滤包含文本下拉列表的列而不是值。
【发布时间】:2017-07-30 01:19:33
【问题描述】:

我正在使用 jQuery 插件 DataTables 来显示数据库中的数据。列具有不同的控件类型。其中一列说它作为 COLUMN 具有选择框作为控件类型。 我还使用了 DataTables 提供的过滤器、分页功能。 Filter on COLUMN 根据列中的值过滤数据。

有什么方法可以过滤框中显示的文本数据,即选项的文本。

self.dummyDataTable = FIT.component.DataTable.init({
        renderTo: 'dummy-index-table',
        id: 'dvmyInputDataGrid',
        data: data[0],
        deferRender: true,
        perPage: 10,
        paging: true,
        scrollY: "200px",
        sScrollX: "200px",
        height: ($(window).height()) * (0.7),
        scroller: true,
        scrollCollapse: true,
        searchable: true,
        showFilters: true,
        sortable: false,
        aaSorting: [],

        columns: Columns,
        select: {
            style: 'os',
            selector: 'td:first-child'
        },
    });

例如:

<select>
        <option value="0">--- Select Officer---</option>
        <option value="1">Sam</option>
        <option value="2">Brad</option>
        <option value="3">Nicholas</option>
        <option value="4">John</option>
</select>

当我将 filter 设置为 true 时。对于这个特定的选择框列,它会在列顶部的过滤框中显示“值”属性列表,例如 1,2,3..

用户可能会对单元格中的文本和过滤框中的值感到困惑,而用户完全不知道。 有没有办法根据文本进行过滤,即 Sam、Brad、Nicholas、John。

我添加了与过滤和搜索相关的代码。

【问题讨论】:

  • 创建一个示例链接,以便我们检查您的问题并纠正它
  • 由于数据来自数据库,并且所有列都是动态生成的,它们的控制类型信息来自数据库,所以我需要用静态数据创建一个示例。同时,您有什么具体的事情需要澄清吗?

标签: javascript jquery datatable datatables


【解决方案1】:

如果我理解你的话。您可以使用要搜索的文本的值创建选择选项,例如:

...
<select id="select_name">
    <option value="0">--- Select Officer---</option>
    <option value="Sam">Sam</option>
    <option value="Brad">Brad</option>
    <option value="Nicholas">Nicholas</option>
    <option value="John">John</option>
</select>
...

然后在 select 上添加一个 on change 事件以在数据表中搜索,如:

$('select#select_name').change(function(){
    self.dummyDataTable.columns( <# column> ).search( this.value ).draw();
});

其中 是您要搜索的列的编号。

【讨论】:

  • 感谢您的快速响应@inye Datatables 具有集成的过滤功能。所以它的作用是无论该列的控件类型是什么,它都会在该列的顶部放置一个具有相同控件类型的过滤器。假设某列的控件类型为文本框,则过滤框为文本框类型,如果为选择框则过滤框为选择框类型。
猜你喜欢
  • 2013-01-24
  • 2011-10-26
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
相关资源
最近更新 更多