【问题标题】:DataTable does not update contentDataTable 不更新内容
【发布时间】:2016-10-06 14:48:04
【问题描述】:

我正在使用 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

这里是My full JavaSript Code

PD2。我的webservice很简单,就是一些sql查询。

【问题讨论】:

    标签: javascript jquery datatable


    【解决方案1】:

    如果我理解正确,您会显示一个 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();
    

    【讨论】:

    • 我正在尝试解决我的问题,并且似乎可以使用我提到的我尝试过的选项,但是当我更新某些内容时,现在使用该选项,表格显示所有记录而不是选定的数字,什么可能是问题吗?我应该上传包含全部功能的文本文件吗?
    • 问题是您尝试完成 Datatable 所做的工作...通过逐行形成表格的内部 html (tr an td)。我会这样做的方法是将数据以数组形式提供并让 DataTable 完成它的工作。
    • 这也将保留列排序和搜索功能。如果你“替换”这些行......这些函数将失败,因为它是基于数据的。
    • 我附上我完整的 javascript 函数的链接,目前我将尝试按照你说的做
    • 我刚刚快速浏览了您的完整代码。因此,您有一些可编辑的 DataTable 单元格,而您真正想要做的是保存编辑内容......我说的对吗?
    猜你喜欢
    • 2018-01-28
    • 2012-01-25
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多