如何使用DataTables获取用户选择节点的行号

时间:2012-06-27 20:54:29

标签: jquery datatables

我的DataTable设置为允许用户选择一行。在桌子旁边,我有" Up"和" Down"允许用户移动表格上的数据行的按钮。要实际移动行,我需要知道所选节点的行号,最明显的方法是使用fnGetPosition()。但是,当我使用FireBug调试代码时,它告诉我fnGetPosition()不是函数。

这是我按下向上按钮时调用的函数:

function moveRowUp()
{       
var table = TableTools.fnGetInstance('firstConditionalTable');//Initialize table as an instance of TableTools
var rows = $("#firstConditionalTable tr");//Making a jQuery objecet of the tr elements in the table
var row = table.fnGetSelected();//fnGetSelected returns an array of all selected nodes. row should be assigned an array.
var index = table.fnGetPosition(row[0]);//Get row number of selected node. FireBug tells me that table.fnGetPosition is not a function.
alert(index);//Testing purposes
rows.eq(index).insertBefore(rows.eq(index - 1));//Does the actual moving up
}

如果有人发现任何问题,我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

table.fnGetPosition(row [0]); //获取所选节点的行号。 FireBug告诉我table.fnGetPosition不是函数

这是正确的 - 在这里你有'table'作为TableTools实例,fnGetPosition是一个DataTable方法(http://datatables.net/api)。您很少想要使用fnGetPosition - 它为您提供DataTables缓存中数据的内部索引,而不是表中的位置。

你可能想要的是这个API方法:http://datatables.net/plug-ins/api#fnGetAdjacentTr为你提供下一个或前一个TR元素 - 考虑到排序,过滤等等。但是请记住,你不能只使用DataTables的DOM方法,因为它内部排序会覆盖你所做的操作 - 请参阅http://datatables.net/faqs#append