2015-10-14 148 views
2

的数据后,我有它用了jQuery插件数据表的表。该表的第一列实际上是正在使用渲染columndef选项选项,我的表initilisation如下面结合序列号。jQuery的数据表不更新,甚至改变每行

 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); 

此数据表中数据的变化(我认为),但它没有得到反映在桌子上

+0

这是否反映了一旦你'refresh'的页面?我的意思是如果涉及任何服务器端处理? –

回答

1

你忘记设置行数据回来,你已编辑后阵:

this.data(row).draw(); 

this.data()只是返回一个“愚蠢的”数组,dataTables在重新插入之前无法知道数组的更改。

您在行动代码 - >http://jsfiddle.net/cfqytLso/

+0

非常感谢您..它工作得很好..但是有关rowIdx的一点澄清。其实我上面的代码的目的是当行被删除时重置第一列上的序列号。所以在你的jsfiddle代码中,我用rowIdx取代了7,这很好。但在我的本地代码时,我试图用rowIdx它返回一个错误 “的DataTable警告:表ID = table_question - 为0行请求未知参数‘4’有关此错误的详细信息,请参阅http://数据表。 net/tn/4“ 我试过的代码是row [0] = rowIdx; –

+0

对不起。我发现了错误。我使用的插件版本是1.10.6。我更新到1.10.9,它修复了这个错误。我认为每个函数中的参数在以前的版本 –

+0

@sforsandeep中都不可用,我认为你是对的。太棒了,你有它的工作! – davidkonrad

相关问题