Javascript datatables-在函数作用于该行时更改行颜色
我有一个datatable,其中包含一些数据,包括一个布尔“status”列 我根据这个“状态”给行上色,并根据它显示一个用户友好的文本 每行中还有一个按钮,用于调用函数(调用ajax调用,在服务器上执行某些工作),这可能会导致状态更改。此调用后,将重新加载表数据,并显示新状态 由于对服务器的调用可能需要几秒钟的时间,因此我希望显示一个中间状态颜色和消息,例如“等待”,并将行颜色更改为黄色,然后在重新加载数据时,颜色和文本将返回到与状态匹配的状态 以下是我到目前为止所做的,缩短为仅显示必要的部分:Javascript datatables-在函数作用于该行时更改行颜色,javascript,datatables,Javascript,Datatables,我有一个datatable,其中包含一些数据,包括一个布尔“status”列 我根据这个“状态”给行上色,并根据它显示一个用户友好的文本 每行中还有一个按钮,用于调用函数(调用ajax调用,在服务器上执行某些工作),这可能会导致状态更改。此调用后,将重新加载表数据,并显示新状态 由于对服务器的调用可能需要几秒钟的时间,因此我希望显示一个中间状态颜色和消息,例如“等待”,并将行颜色更改为黄色,然后在重新加载数据时,颜色和文本将返回到与状态匹配的状态 以下是我到目前为止所做的,缩短为仅显示必要的部分
$(document).ready(function(){
table = $('#table').dataTable(
{
'columns' : [ {
title : 'Status',
data : 'running'
}, {
title : 'Name',
data : 'name'
}, {
title : 'Do Something',
data : 'running'
} ],
'fnRowCallback' : function(row, data, dataIndex, dataIndexFull) {
if(data.running) {
$(row).css('background-color', '#DEF1D7');
} else {
$(row).css('background-color', '#F0DDDD');
}
},
'columnDefs' : [{
'targets' : 0,
'searchable' : false,
'orderable' : true,
'className' : 'dt-body-center',
'render' : function(data, type, full, meta) {
if (data) {
return "Running";
} else {
return "Halted";
}
}
}, {
'targets' : 2,
'searchable' : false,
'orderable' : false,
'className' : 'dt-body-center',
'render' : function(data, type, full, meta) {
var button = document.createElement("button");
button.innerHTML = "Do something";
button.setAttribute("onclick", "doSomething(\'" + full.name + "\')");
if (data) {
button.disabled = false;
} else {
button.disabled = true;
}
return button.outerHTML;
}
} ],
});
loadData();
});
function loadData() {
$.ajax({
type : 'GET',
url : '/url/to/my/data',
contentType : false,
processData : false,
data : null,
success : function(retData) {
table.fnClearTable();
// Add updated data
table.fnAddData(retData);
// Redraw table
table.fnDraw();
},
error : function(request, status, error) {
// Clear table
table.fnClearTable();
// Redraw table
table.fnDraw();
}
});
}
doSomething(name){
//do some stuff that takes some time
//after that's done
loadData();
}
在按下按钮时调用的doSomething方法中,如何更改行的颜色?我是否可以在
fRowCallback
中以某种方式在行上设置一个id,并在doSomething
中使用该id?如何处理如下所示的onclick
$('#example tbody').on( 'click', 'button', function () {
$(this).parents('tr').attr('style','background-color: red')
});
可能您可以在刷新数据时绑定onclick,单击按钮后,可以获取其父tr元素并更改其颜色
让我知道这是否有效下面如何处理onclick
$('#example tbody').on( 'click', 'button', function () {
$(this).parents('tr').attr('style','background-color: red')
});
可能您可以在刷新数据时绑定onclick,单击按钮后,可以获取其父tr元素并更改其颜色
让我知道这是否有效我尝试过这个想法,但出于某种原因,我得到了“table.row不是一个函数”,这没有任何意义,但它确实存在。无论如何,我没有使用这一行。编辑答案。我试过这个想法,但出于某种原因,我得到了“table.row不是一个函数”,这没有任何意义,但它确实存在。无论如何,我没有使用这一行。编辑答案。你能查一下吗