即使在更改每行的数据后,jQuery dataTable也不会更新

时间:2015-10-14 07:29:44

标签: jquery datatables

我使用的是使用JQUERY数据库插件的表。该表的第一列实际上是使用 columndef 选项中的呈现选项进行绑定的序列号,我的表初始化如下所示。

      var myTable = $("#table_question").dataTable(
        {
            "columnDefs": [
            { "targets": 0, "render": 
function (data, type, row,meta) { return String.format("<h4>{0}</h4>",row[4] ) } },

            { "targets": [3, 4], "visible": false}],

            "lengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],

        });

这是我的 TR 的HTML结构(我的是一个ASP.NET应用程序,因此包含了eval)

<tr questionid='<%# Eval("questionid")%>' questiontype='<%# Eval("questiontype")%>'>
   <td class="col-md-1 col-xs-1 xol-sm-1">
   </td>
   <td class="col-md-7 col-sm-7 col-xs-7">
      <%# Eval("question")%>
   </td>
   <td class="col-md-3 col-sm-3 col-xs-3">
      <%# Eval("questionid")%>
   </td>
   <td>
      <%# Eval("questiontype") %>
   </td>
   <td> <%# Eval("questionsequence")%></td>
</tr>

一切正常。序列号显示正常。但是当我删除一行时,我需要更新序列号。所以我试图迭代表并更改了Row数据。但是,当我尝试使用以下方式时,似乎没有任何东西反映在桌面上。

var table = $('#table_question').DataTable();
table.rows().every(function (rowIdx, tableLoop, rowLoop) {
     var row = this.data();
     row[0]=7
     row[4]=7;
});

table.draw(true);

这里数据表数据的变化(我认为),但它没有反映在表格上

2 个答案:

答案 0 :(得分:2)

编辑完阵列后,您忘记重新设置行数据:

this.data(row).draw();

this.data()只会返回一个&#34;愚蠢的&#34;数组,dataTables在重新插入之前无法知道数组的更改。

您的代码在行动 - &gt;的 http://jsfiddle.net/cfqytLso/

答案 1 :(得分:0)

我能够这样解决

  this.data().fieldYouWantToModify = newValue;
  this.invalidate().draw();
  

由于您无需更改单元格的渲染方式,因此无需重新渲染。

我找到了解决方法here