从服务器端获取数据,然后将数据添加到datatable。但是在调用fndraw()函数时。 ajax没有再次加载,oSettings_aData为空。
调用$(“#clientTable”)。dataTable()。fnDraw();但是点击按钮时表中没有加载数据。
这是我填充数据表的功能。
function fillGrid() {
alert("enterened fillgrid");
$.ajax(
{
type: 'POST',
url: 'BehindCode/client.aspx/fillgrid',
cache: false,
dataType: "json",
contentType: "application/json; charset=utf-8",
beforeSend: function () {
$('#gridLoadingDiv').attr('style', 'display:block');
},
complete: function () {
$('#gridLoadingDiv').attr('style', 'display:none');
},
data: "{}",
success: function (data) {
//data = data.d;
data = JSON.parse(data.d).Data;
// alert(data);
alert("entered success");
$("#clientTable").DataTable(
{
"stateSave": true,
"searching": true,
"processing": true,
"data": data,
// "ordering": false,
"order": [[2, "asc"]],
"columns": [
{ "data": null,
"defaultContent": ' <input type="checkbox" onclick="return selectOne();" />',
"sorting": false
},
{ "data": "CLIENT_ID",
"visible": false
},
{ "data": "CLIENT_NAME" },
{ "data": null,
"defaultContent": ' <a ><img id="editimg" src="images/edit.png" width="15px" alt="edit" onclick="callEdit(this);" /></a>',
"sorting": false
}
],
"fnDrawCallback": function (oSettings) {
alert(oSettings);
alert("draw called");
}
});
}
});
}
答案 0 :(得分:0)
我可以为您提供一些基本的代码,希望对您有所帮助。
我的数据表:
var ETable = $('#myDataTable').dataTable({
//bProcessing,bWidth etc comes above
"sAjaxSource": "../Employee/AjaxHandler",
"fnServerData": function (sSource, aoData, fnCallback) {
//Inside i have ajax call under click function like this
$.ajax({
//on click i am deleting a row on success i am reloading table
"success": function (data) {
ETable.fnClearTable(0);
ETable.fnDraw();
}
});
我的加载Ajax调用
$.ajax({
//under success i call fnCallback(data)
});
这里的诀窍是,在您清除表格后调用fnDraw时,ajax call on load
会触发并提供最新信息,并通过fnCallback
填写表格。