我已经解决了我没有从服务器取回数据的问题我只是删除了一些行并使用新节点作为 aaData 和 aoColumns 重绘表顺便说一句我实际上将 bDestroy 设置为 true 以重绘服务器端进程,我使用了一些隐藏的输入并发送已删除元素的 id 代码行,这是 ajax 代码:
var required_data = {deleted_nodes:tr_id};
$.ajax({
type:"POST",
cache:false,
url:$('#items_form').attr('action'),
data:required_data,
success:function () {
}
});
这是重绘表格的代码:
var table = $('#itemsTable').dataTable({"bRetrieve":true});
var nodes = table.fnGetNodes();
table.fnDeleteRow(nodes[parseInt(tr_number) - 1], null, true);
nodes = table.fnGetNodes();
var data = [];
for (var i = 0; i < nodes.length; i++) {
data.push(
{
count:(i + 1).toString(),
name:nodes[i].cells[1].innerHTML,
type:nodes[i].cells[2].innerHTML,
specialName:nodes[i].cells[3].innerHTML,
status:nodes[i].cells[4].innerHTML,
manage:nodes[i].cells[5].attributes['id']
}
);
}
var oSettings = {
"aaData":data,
"aoColumns":[
{"sTitle":"number", "mDataProp":"count", "style":"width:10px;"},
{"sTitle":"name", "mDataProp":"name", "style":"width:50px;"},
{"sTitle":"type", "mDataProp":"type", "style":"width:50px;"},
{"sTitle":"special name", "mDataProp":"specialName", "style":"width:50px;"},
{"sTitle":"status", "mDataProp":"status", "style":"width:50px;"},
{"sTitle":"management", "mDataProp":"manage", "style":"width:25px; text-align: center;"}
],
"sScrollY":"500px",
"bPaginate":false,
"bScrollCollapse":true,
"bFilter":false,
"bDestroy":true,
"fnRowCallback":function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
var str = '<span><img src="' + 'error.png' +
'" name="delete"' + ' style="width:20px;height:20px;cursor:pointer" ' +
'onclick="' + "delete_item('" + aData.count + "', '" + aData.manage.value + "');" +
'" class="small-icon"' + ' title="delete this" /></span>' +
'<span><img src="' + 'warning.png' +
'" name="edit"' + ' style="width:20px;height:20px;cursor:pointer" ' +
'onclick="' + "report_problem('" + aData.count + "', '" + aData.manage.value + "', '" + aData.type + "');" +
'" class="small-icon"' + ' title="edit this" /></span>';
$('td:eq(5)', nRow).html(str);
$('td:eq(5)', nRow)[0].setAttribute('id', aData.manage.value);
}
};
table.dataTable('#itemsTable', oSettings);
我使用元素的 ID 作为每行中第五个 TD 的 ID,所以我通过以下方式检索:
manage:nodes[i].cells[5].attributes['id']
之后我使用 fnRowCallback 实际做了两个任务: 1- 使用一些图片元素来创建一个好的用户界面。它是通过使用完成的
$('td:eq(5)', nRow).html(str);
2- 再次设置第五个 TD 的 ID 以供进一步使用。它是通过使用完成的
$('td:eq(5)', nRow)[0].setAttribute('id', aData.manage.value);
;-)