DataTables (API)- 清除并读取数据到 table
DataTables (API)- clear and readd data to table
我正在使用 DataTables,下面的内容非常适合填充和呈现 table
loadTableDS = function (data) {
var len = data.d.length;
if (len > 0) {
var r = new Array(), j = -1;
for (var key = 0, size = len; key < size; key++) {
r[++j] = '<tr><td>';
r[++j] = data.d[key].CRMFieldOperativeGuid.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Eastings.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ActualDistance.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ActualTravelTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Northings.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].PostcodeNS.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].RES_TYPE_ID.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].RS_ID.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceCode.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceAvailableStart.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceAvailableEnd.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].FullName.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Postcode.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedDistance.toString();
r[++j] = '</td><td>';
r[++j] = getDateTime(data.d[key].ResourceAvailableStart);
r[++j] = '</td><td>';
r[++j] = getDateTime(data.d[key].ResourceAvailableEnd);
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedInstructionTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedTravelTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceType.toString();
r[++j] = '</td></tr>';
}
$('#tblDayShiftEngineers tbody').html(r.join(''));
var dsengineers = $('#tblDayShiftEngineers').DataTable({
"destroy": true,
"info": false,
"lengthChange": true,
dom: 'T<"clear">lfrtip',
tableTools: {
"sRowSelect": "single",
"aButtons": ""
}
});
// hide the first 11 columns
for (var i = 0; i < 11; i++) {
dsengineers.column(i).visible(false);
}
}
}
table 已填充,前 11 行已隐藏。 data 变量由 ajax 调用填充。
现在我需要能够刷新 table,即调用函数,清除所有现有行并使用新的 data 变量重新填充。
我将 table 的初始化移动到函数的开头:
loadTableDS = function (data) {
var dsengineers = $('#tblDayShiftEngineers').DataTable({
"destroy": true,
"info": false,
"lengthChange": true,
dom: 'T<"clear">lfrtip',
tableTools: {
"sRowSelect": "single",
"aButtons": ""
}
});
// hide the first 11 columns
for (var i = 0; i < 11; i++) {
dsengineers.column(i).visible(false);
}
var len = data.d.length;
if (len > 0) {
但这不起作用,因为 11 个数据列仍然存在(我也尝试将隐藏代码移动到填充 table 之后 - 没有区别)。
我试过 clear().draw();没有快乐。
在我把我的电脑从 window 中扔出去之前,有人可以给我一个指导,甚至是关于我哪里出错的伪代码! :)
非常感谢
我不确定您使用的是哪个版本的 DataTables,但我使用:
if($tableloaded == false){
loadTable();
} else {
$('#jobTable').dataTable().fnDestroy();
loadTable();
}
这非常适合我。
此外,这是来自 DataTables 当前 API:
var table = $('#myTable').DataTable();
$('#tableDestroy').on( 'click', function () {
table.destroy();
} );
我正在使用 DataTables,下面的内容非常适合填充和呈现 table
loadTableDS = function (data) {
var len = data.d.length;
if (len > 0) {
var r = new Array(), j = -1;
for (var key = 0, size = len; key < size; key++) {
r[++j] = '<tr><td>';
r[++j] = data.d[key].CRMFieldOperativeGuid.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Eastings.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ActualDistance.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ActualTravelTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Northings.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].PostcodeNS.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].RES_TYPE_ID.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].RS_ID.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceCode.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceAvailableStart.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceAvailableEnd.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].FullName.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].Postcode.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedDistance.toString();
r[++j] = '</td><td>';
r[++j] = getDateTime(data.d[key].ResourceAvailableStart);
r[++j] = '</td><td>';
r[++j] = getDateTime(data.d[key].ResourceAvailableEnd);
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedInstructionTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].EstimatedTravelTimeMinutes.toString();
r[++j] = '</td><td>';
r[++j] = data.d[key].ResourceType.toString();
r[++j] = '</td></tr>';
}
$('#tblDayShiftEngineers tbody').html(r.join(''));
var dsengineers = $('#tblDayShiftEngineers').DataTable({
"destroy": true,
"info": false,
"lengthChange": true,
dom: 'T<"clear">lfrtip',
tableTools: {
"sRowSelect": "single",
"aButtons": ""
}
});
// hide the first 11 columns
for (var i = 0; i < 11; i++) {
dsengineers.column(i).visible(false);
}
}
}
table 已填充,前 11 行已隐藏。 data 变量由 ajax 调用填充。
现在我需要能够刷新 table,即调用函数,清除所有现有行并使用新的 data 变量重新填充。
我将 table 的初始化移动到函数的开头:
loadTableDS = function (data) {
var dsengineers = $('#tblDayShiftEngineers').DataTable({
"destroy": true,
"info": false,
"lengthChange": true,
dom: 'T<"clear">lfrtip',
tableTools: {
"sRowSelect": "single",
"aButtons": ""
}
});
// hide the first 11 columns
for (var i = 0; i < 11; i++) {
dsengineers.column(i).visible(false);
}
var len = data.d.length;
if (len > 0) {
但这不起作用,因为 11 个数据列仍然存在(我也尝试将隐藏代码移动到填充 table 之后 - 没有区别)。
我试过 clear().draw();没有快乐。
在我把我的电脑从 window 中扔出去之前,有人可以给我一个指导,甚至是关于我哪里出错的伪代码! :)
非常感谢
我不确定您使用的是哪个版本的 DataTables,但我使用:
if($tableloaded == false){
loadTable();
} else {
$('#jobTable').dataTable().fnDestroy();
loadTable();
}
这非常适合我。
此外,这是来自 DataTables 当前 API:
var table = $('#myTable').DataTable();
$('#tableDestroy').on( 'click', function () {
table.destroy();
} );