数据表:根据过滤器值隐藏或取消隐藏行

时间:2019-12-05 08:06:57

标签: jquery datatable show-hide

我有一个数据表,允许用户将状态更新为 NG COMPLETED ,默认为破折号(-)。如果为该行选择了完成,则将其隐藏,但是如果为NG,则只会将该行颜色更改为红色。我已经实现了功能。我的一个问题是,如果我正在使用过滤器(过滤器为 SHOW COMPLETED SHOW NG ),则新更新的状态行不包含在数据表中。这是我更新行状态的方法。

//selected-status is the rows' drop down element id
$(document).on('change','.selected-status', function(){
    let id = $(this).parents('tr').find('.updateStatus').val();
    let selected_status = $(this).val();
    let dis = this;
    //status is updated in DB
    $.post('/user/guest/list/updateStatus', {
        selected_status: selected_status,
        id: id,
        _token: $("[name=csrf-token]").attr('content'),
    }, function (data) {
        if (data.name === "") {
            console.log('Not found')
        } else {
            if (selected_status == 2) { //if NG
                $(dis).parents('tr').css('background-color', '#f7b9b5')
            } else if(selected_status == 0) { //if default
                $(dis).parents('tr').css('background-color', ' white')
            }else{ //if completed
                $(dis).parents('tr').remove();
                var tr = $(dis).closest('tr');
                var row = guestTable.row( tr );
            }
        }
    }).fail(function (err) {
        console.log(err)
    });
})

这是过滤器代码:

$(document).on('change','.changeDisplayGuestListTable', function(){
    let status = $(".by-status").val();

    guestTable
        .search( '' )
        .columns().search( '' )
        .draw();
    //default filter , show NG status and no status (dash sign)
    if(status == 0){
        guestTable
        .column(11).search("0|2",true, false).draw();
    }else{
        if(status == 1){
            guestTable
            .column(11).search("1").draw();
        }else if(status == 2){
            guestTable
            .column(11).search("2").draw();
        }
    }

});

现在这是新更新的行不包括在过滤器中的显示部分。有帮助吗?

1 个答案:

答案 0 :(得分:0)

如果我从代码中正确理解,数据表将使用特定列保存的值作为过滤手段。似乎是第11列,所以第12列的索引是0。在这里,虽然您要发送的发帖请求可能会更新后端中的条目,但是直到刷新后才影响表本身。当前,在回调中,您正在更新行的颜色,而不是状态本身的值。因此,直到页面刷新后,情况才会改变。您还需要更新所选行的第11列中的值,以便查询将行识别为具有要搜索的值。