繁体   English   中英

仅适用于某些列的 jQuery-Datatables 下拉列表

[英]jQuery-Datatables dropdowns ONLY for some columns

使用此代码以及我见过的所有示例,我可以向所有列添加下拉列表,如图所示:

在此处输入图片说明

var table = $('#myTable').DataTable({
        dom: 'lfBrtip',

        initComplete: function () {
        this.api().columns().every( function () {
            var column = this;
            var select = $('<select><option value=""></option></select>')
                .appendTo( $(column.header()))
                .on( 'change', function () {
                    var val = $.fn.dataTable.util.escapeRegex(
                        $(this).val()
                    );

                    column
                        .search( val ? '^'+val+'$' : '', true, false )
                        .draw();
                } );

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

例如,如何仅为第 2 列和第 3 列添加下拉列表?

您应该使用each来获取列索引以设置下拉列表。

var table = $('#myTable').DataTable({
        dom: 'lfBrtip',

        initComplete: function () {
        var api = this.api();
         this.api().columns().eq(0).each( function ( index ) {
           if(index == 1 || index == 2)
           {
            var column = this;
            var select = $('<select><option value=""></option></select>')
                .appendTo( $(api.column(index).header()))
                .on( 'change', function () {
                    var val = $.fn.dataTable.util.escapeRegex(
                        $(this).val()
                    );

                    column
                        .search( val ? '^'+val+'$' : '', true, false )
                        .draw();
                } );
              var i = 0;
              api.column(index).data().unique().sort().each( function ( d, j ) {
                select.append( '<option value="'+d+'">'+d+'</option>' );
              } );
           }
        } );
.......
    }

您所要做的就是添加以下两行

var table = $('#myTable').DataTable({
    dom: 'lfBrtip',

    initComplete: function () {
    this.api().columns().every( function () {
        if(this[0] == 2 || this[0] == 3){//add
        var column = this;
        var select = $('<select><option value=""></option></select>')
            .appendTo( $(column.header()))
            .on( 'change', function () {
                var val = $.fn.dataTable.util.escapeRegex(
                    $(this).val()
                );

                column
                    .search( val ? '^'+val+'$' : '', true, false )
                    .draw();
            } );

        column.data().unique().sort().each( function ( d, j ) {
            select.append( '<option value="'+d+'">'+d+'</option>' )
        } );
    } // add
    } );
    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM