我使用datatables顯示若干信息和按鈕。 這是用於初始化數據表Datatables每5秒更新一列
if (! $.fn.DataTable.isDataTable('#datatableTable')) {
datatableTable = $('#datatableTable').DataTable({
responsive: true,
columnDefs: [
{ "width": "25%", "targets": 4},
{
targets: [4,5,6],
//set priority to column, so when resize the browser window this botton stay on the screen because have max priority
visible: (document.getElementById('role').value == '[ROLE_ADMIN]' || document.getElementById('role').value == '[ROLE_FLEET_ENG]'
|| document.getElementById('role').value == '[ROLE_SUPPLIER]'),
responsivePriority: 1,
orderable: false,
searchable: false,
},
...
],
//fix problem with responsive table
"autoWidth": false,
"ajax":{
"url": "datatable/" + $("#selectedCar").val(),
"dataSrc": ...
return json.result.data;
},
"error": function (xhr, error, thrown) {
window.location.href = "/DART/500";
}
},
"columns": [
....
{data:null, render: function (data, type, row) {
var datId="deleteDat"+row.idAcquisition;
if (row.datUploaded){
return '<button type="button" class="btn btn-danger" name="deleteDat" target="'+row.idAcquisition+'" id="'+datId+'" data-toggle="modal"'
+'data-target="#deleteDatModal">Delete</button>'
}else
return '<button type="button" class="btn btn-danger" name="deleteDat" target="'+row.idAcquisition+'" id="'+datId+'" data-toggle="modal"'
+'data-target="#deleteDatModal" disabled>Delete</button>'
},
],
"fnDrawCallback": function(data, type, row, meta) {
//Initialize checkbox for enable/disable user
$("[name='my-checkbox']").bootstrapSwitch({size: "small", onColor:"success", offColor:"danger"});
},
});
}
else {
datatableTable.ajax.url("datatable/" + $("#selectedCar").val()).load();
}
第5列(從0開始)具有按鈕的JavaScript,每個按鈕可被禁用或啓用依賴於datUploaded
布爾值。 如果用戶加載文件,這個變量會發生變化,但是這個值已經在異步任務之後設置,所以我不知道在我的JavaScript何時該任務結束。
我以爲每5秒鐘只更新一次這一欄,但我該怎麼辦呢? 我發現datatableTable.column(5).cells().invalidate().render()
但我收到一個錯誤(第0行未知參數「isShow」),更新不起作用。 你能幫我嗎?謝謝
能否請您剝離下來你的示例代碼實際問題的部分(S) – fast
現在是更好?我認爲問題是「fnDrawCallback」和說明更新列 – luca
你說「設置異步任務後,所以我不知道在我的JavaScript何時結束」,但你可以傳遞.load()回調到在ajax調用終止後執行,所以你實際上可以知道任務結束的時間。 – lud1977