我创建了一个交换表中行的函数,但它似乎没有正常工作。行的数据似乎与数组中的数据不匹配。任何人都可以帮助指出我的代码中的错误,或者我如何滥用某些DataTable函数?
function swapDataTableRows(selector, row1Index, row2Index)
{
var datatable = selector.DataTable();
var rows = datatable.rows().data();
var row1Data = datatable.row(row1Index).data();
var row2Data = datatable.row(row2Index).data();
datatable.row(row1Index).data(row2Data);
datatable.row(row2Index).data(row1Data);
}
swapDataTableRows(table,2,3) - 它将交换第1行和第2行。如果我向索引添加1,那么它就越界了。
答案 0 :(得分:1)
我确定不明白你的问题......
我尝试创建一个简单的演示来理解:
...在您的函数中,您永远不会draw
带有新(已编辑)数据的表:
我更改了这两行脚本:
datatable.row(row1Index).data(row2Data);
datatable.row(row2Index).data(row1Data);
然后我添加.draw()
:
datatable.row(row1Index).data(row2Data);
datatable.row(row2Index).data(row1Data);
width .draw()
也改变DOM,ROW1和ROW2交换。
答案 1 :(得分:0)
来自Frogmouth的回答,
`http://jsfiddle.net/bobxdr7c/`
我添加了一些更改。
由于在实例化Datatable时将排序选项设置为true, 每当你尝试交换他们的数据并重新绘制它时,它看起来都不是你所期望的。
要解决此问题,
P.S。嗯,似乎我不能直接在帖子中创建一个jsfiddle链接。 :(
答案 2 :(得分:0)
如果这不是第一次切换行,您很可能使用了错误的行索引。 DOM 中显示的索引不一定是该行在 api 中的索引。
您是否尝试过使用特定选择器(例如其 id)来处理行?
例如:datatable.row("#row1id")
对于要在 DOM 中更新的更改,您还需要在所有数据切换完成后调用 datatable.draw()
。