数据表找到字符串并添加类

时间:2016-02-07 08:45:45

标签: datatables find addclass

我尝试在表中找到字符串并将类添加到此行。但是这段代码不起作用。什么都没发生。这是我的代码,后者我调用myTable()函数:

function myTable() {
    var selectDateVar = $('#selectDate').val();

        var table = $('#example').DataTable( { // Таблица
            "processing": true,
            "serverSide": true,
            "deferRender": true,
            "bDestroy": true,

            "sAjaxSource": "server_processing.php?data=30/09/2015",
            "order": [[ 2, "desc" ]],
            initComplete: function(){
                var api = this.api();

                new $.fn.dataTable.Buttons(api, {
                    buttons: [
                        {
                        extend: 'print',
                        text: 'Принтиране',
                        'className': 'btn-lg btn btn-warning printBTN',
                        },
                    ]
                });

                api.buttons().container().appendTo( '.printButton' );  
            }

        });

        var indexes = table.rows().eq( 0 ).filter( function (rowIdx) {
            return table.cell( rowIdx, 3 ).data() === '180' ? true : false;
        } );
        table.rows( indexes ).nodes().to$().addClass( 'highlight' );
    }

我的表:

enter image description here

我使用此示例https://datatables.net/reference/type/row-selector

1 个答案:

答案 0 :(得分:3)

function myTable() {
    var selectDateVar = $('#selectDate').val();

    var table = $('#example').DataTable( { // Таблица
        "processing": true,
        "serverSide": true,
        "deferRender": true,
        "bDestroy": true,

        "sAjaxSource": "server_processing.php?data=30/09/2015",
        "order": [[ 2, "desc" ]],
        initComplete: function(){
            var api = this.api();
            new $.fn.dataTable.Buttons(api, {
                buttons: [
                    {
                    extend: 'print',
                    text: 'Принтиране',
                    'className': 'btn-lg btn btn-warning printBTN',
                    },
                ]
            });

            api.buttons().container().appendTo( '.printButton' );  

            //filtering code should be inside of initComplete function
            //but in your case an empty table is filtered
            var indexes = table.rows().eq( 0 ).filter( function (rowIdx) {
                 return table.cell( rowIdx, 3 ).data() === '180' ? true : false;
            } );

            table.rows( indexes ).nodes().to$().addClass( 'highlight' );
        }

    });
} 

您需要在数据加载时调用代码。目前,您在表填充服务器数据之前调用它。只需将您的代码示例添加到initComplete函数即可。 在加载Ajax数据之后将调用initComplete。

第二个问题的答案:如果您需要搜索多个列,只需添加以下代码:

var indexes = table.rows().eq( 0 ).filter( function (rowIdx) {
    return table.cell( rowIdx, 3 ).data() === '180' &&
           table.cell( rowIdx, 0 ).data() === '521' ? true : false;
} );