2017-09-04 45 views
1

我正在兩個表之間移動一些行。我有一個動態列,根據其他字段的值(選擇)假設不同的值。這是我的代碼示例:DataTables:添加行後的緩存值

var clickedRow = queueTable.row($(elm)) 
var extraCols = [ 
    12 
]; 
$.merge(clickedRow.data(), extraCols); 
$(secondTable.row.add(clickedRow.data()).draw().node()) 
clickedRow.remove().draw(); 

問題是該行已被移動後的第一時間,如果我將它再次改變了動態列值(例如13),舊值保持緩存,即使我從console.log(clickedRow.data())看到該對象包含新刷新的值。如何刷新緩存(如果它是緩存問題)?我試着用* .draw()重繪兩個表,但沒有解決。

+0

這是有點不清楚。如果你想從隊列表中刪除該行,你怎麼能再次插入它? – davidkonrad

+0

@davidkonrad實際上,我**移動**兩個表之間的一些行。我不只是從queueTable中移除它,而是將它創建到** secondTable **中,然後從隊列中刪除它表 – Mark

+0

也許看看https://datatables.net/reference/api/row().invalidate() – sur

回答

1

你有一些特點,但很難知道你爲什麼這樣做,因爲你沒有完整的代碼。我想簡單地 「移動」 或複製內容:

$('#queueTable').on('click', 'tbody tr', function() { 
    var clickedRowData = queueTable.row(this).data(); 
    queueTable.row(this).remove().draw(); 
    clickedRowData.push('42'); 
    secondTable.row.add(clickedRowData).draw(); 
}) 

http://jsfiddle.net/uh3t80oL/

NBpush()應該簡單數組中。您可以使用push('42', 'qwerty', new Date())等來添加多個值。

+0

感謝您的'push()'建議,我已經修復了它。關於問題的問題,這是我的愚蠢的錯誤:在將行移回到初始表時,我不是'pop()'平掉了已經添加的列。 – Mark