我有一个数据表,允许用户将状态更新为 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();
}
}
});
现在这是新更新的行不包括在过滤器中的显示部分。有帮助吗?