我使用的是jQuery DataTable插件,但我遇到了一个问题,在我的页面中我可以使用AJAX和JavaScript编辑特定行的信息,我的功能是这样的:
$.ajax ... code
success function... code and finally
DrawMyTable();
DrawMyTable是另一个AJAX,代码是这样的:
$.ajax ... code (Select * from and that stuff)
var html = "";
var html += "<tr>";
var html += "<td>";
var html += ... Then I do this for all the result from the Select Query;
var html += "</td>";
var html += "</tr>"; and finally
$('#MyTable').html(html);
$('#MyTable').DataTable().destroy(); //Looking here for answer I find that this could be a solution because before facing this issue I had the "cannot reinitialise datatable" error.
$('#MyTable').DataTable();
编辑#2
$('#MyTable').DataTable().destroy();
This have an error, the correct function is $('#MyTable').dataTable().destroy();
However with this I get the same issue, the table now is uptated but shows all the records.
编辑:
我尝试使用此功能(此表更新但显示我的所有记录,而不是仅显示10,25或用户选择的任何内容):
$("#MyTable").DataTable().fnDestroy();
$("#MyTable").DataTable();
此:
$('#MyTable').DataTable({
bRetrieve: true
Or
$('#MyTable').DataTable({
destroy: true
但是我得到了相同的结果,我的表按预期加载,但是当我编辑某些内容(编辑某些东西应该重新加载表格)时,我的成功按钮出现了但是我的表格没有改变,直到我重新加载页面,并且我的表格分页也重新启动(例如在开头我每页显示10条记录,但是当我调用我的编辑功能时,表格会显示所有记录)我做错了什么?怎么能解决这个问题呢?
PD。我无法在DataTable中使用AJAX选项,因为我需要插入其他来自ajax调用的信息。
编辑#3
PD2。我的web服务很简单,只是一些SQL查询。
答案 0 :(得分:0)
如果我理解正确,你会显示一个DataTable ...
然后你想使用ajax为它添加一行。
我这样做的方法是push
通过ajax获取的新值到DataTable用于draw
的数据。
数据需要是一个包含每行数组的数组......像这样:
var myTable;
var data;
$(document).ready(function() {
data = [ ["Text for cell#1 - row 1","Text for cell#2 - row 1","Text for cell#3 - row 1"]
["Text for cell#1 - row 2","Text for cell#2 - row 2","Text for cell#3 - row 2"]
["Text for cell#1 - row 3","Text for cell#2 - row 3","Text for cell#3 - row 3"]
];
myTable = $('#myTable').DataTable({
data:data
});
// Draw the table
myTable.draw();
} );
所以之后......在ajax成功回调中,我会从结果中创建一个这样的数组:
(您可能必须使用循环来正确格式化)
var newData = ["Text for cell#1 - row 4","Text for cell#2 - row 4","Text for cell#3 - row 4"]
然后push
到data
数组并重新绘制表格。
data.push(newData);
myTable.draw();