2015-10-14 158 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

相關問題