我使用的是使用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);
这里数据表数据的变化(我认为),但它没有反映在表格上
答案 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