省略数据表中列的一般解决方案

时间:2017-11-20 09:24:38

标签: javascript jquery datatables

我想省略数据表过滤器功能中的某些列。我解决了特定情况,我需要概括代码。

(gdb) break api_solver.cpp:247
Breakpoint 2 at 0x7ffff5afbb31: file ../src/api/api_solver.cpp, line 
247.
(gdb) cont
Continuing.

Breakpoint 2, Z3_solver_assert ( ... ) at ../src/api/api_solver.cpp:247
247    to_solver_ref(s)->assert_expr(to_expr(a));
non_filterable = [0];

$(document).ready(function() {
    // Setup - add a text input to each footer cell
    var i = 0;
    $('#example th').each( function () {
        if (i != non_filterable) {
            var title = $(this).text();
            $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
        }
        i++;
    } );
 
    // DataTable
    var table = $('#example').DataTable({
    bSortCellsTop: true,  dom: 't',
    info: false, columnDefs: [{ "targets": non_filterable, "searchable": false}],
    });
 
    // Apply the search
    table.columns().every( function () {
        var that = this;
 
        $( 'input', this.header() ).on( 'keyup change', function () {
            if ( that.search() !== this.value ) {
                that
                    .search( this.value )
                    .draw();
            }
        } );
    } );
} );

在上面创建的示例中,它可以省略对第0列的过滤。但是,例如,将“不可过滤”变量更改为[0,2]不起作用。如何实现从过滤器功能中省略列的一般解决方案?

1 个答案:

答案 0 :(得分:1)

您需要使用indexOf()来检查non_filterable数组中是否存在索引。

像这样:

non_filterable = [0,2];
$(document).ready(function() {
    // Setup - add a text input to each footer cell
    var i = 0;
    $('#example th').each( function () {
        if (non_filterable.indexOf(i)===-1) {
            var title = $(this).text();
            $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
        }
        i++;
    } );

    // rest of your code
});