2012-06-27 75 views
1

我的DataTable設置爲允許用戶選擇一行。在表格的側面,我有「上」和「下」按鈕,可以讓用戶移動桌子上的數據行。爲了實際移動行,我需要知道所選節點的行號,最明顯的方法是使用fnGetPosition()。但是,當我使用FireBug來調試代碼時,它告訴我fnGetPosition()不是函數。如何使用DataTable獲取用戶選定節點的行號

這是我的功能按下向上按鈕時調用:

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

table.fnGetPosition(row [0]); //獲取所選節點的行號。螢火告訴我,table.fnGetPosition不是一個函數

而且它是正確的 - 在這裏你有「表」作爲TableTools實例,該實例fnGetPosition一個DataTable中方法(http://datatables.net/api)。你很少想使用fnGetPosition - 它給你DataTables緩存中數據的內部索引,而不是表中的位置。

你可能想要的是這個API方法:http://datatables.net/plug-ins/api#fnGetAdjacentTr給你下一個或上一個TR元素 - 考慮到排序,過濾等。但是請記住,你不能只使用DOM方法與DataTables,因爲它的內部排序會覆蓋你所做的操作 - 參見http://datatables.net/faqs#append