2012-12-11 100 views
4

我使用DataTable來顯示消息列表。Datatables獲取沒有點擊它的行數據

我需要一種方法來獲取特定的數據行,基於傳遞給查詢字符串上的頁面的id。

ex。 www.webpage.com?id=2

我已經有了一個jQuery變量的id。 現在我只需要訪問與該ID相關聯的DataTable行。

基本上,我需要引用該行,而不必點擊它。

有什麼建議嗎?

+0

你試過了dataTables中的'fnSelect()'函數嗎? – dnagirl

+0

我沒有......那是幹什麼的?我查看了他們的API列表,但我沒有看到目前列出的那個?也許是新的還是舊的? – Silverwulf

+0

你只需要對元素的引用,或者你是指行中的數據或數組? – Gigo

回答

8

的一種方式可以是使用fnGetPositionfnGetData

var rowIndex = table.fnGetPosition($("some selector").closest('tr')[0]); 
//some selector = should select some hidden element inside a row that 
//contains the relevant id 
var aData = table.fnGetData(rowIndex ); 
alert(aData[0]);// will show first column data 

這裏工作,與特定ID選擇行的外部按鈕的jsfiddle example

其選擇與該行又如頁面加載時的特定ID(就緒)jsfiddle example N#2

看看功能

$("#wow").click(function() { 

    var rowIndex = table.fnGetPosition($("#example input[value=\'TridentVal\']").closest('tr')[0]); 
    alert(rowIndex); 
    var aData = table.fnGetData(rowIndex); 
    alert(aData[0]); // will show first column data 
});​ 

這是選擇具有相關數據輸入的方式... ...:

$("#example input[value=\'TridentVal\']") 

example是表ID,與所需的ID替換TridentVal

+0

這看起來很有前途......我將如何去引用我需要使用fnGetPosition的特定行? 例如... ID = 2的行? – Silverwulf

+0

我只需要說.closest('tr')[2]? – Silverwulf

+0

nope,讓'.closest('tr')[0]'保持原樣......你有一列保存行的id嗎?如果不添加一些隱藏的'輸入'('style =「display:none」'),並且'value =「ID_OF_THE_ROW」'... – Daniel

2

首先,您必須使用jQuery獲取表格行。

var $rowNode = $('#myTable').find('tbody tr:eq(0)').get(0); 

然後使用fnGetData獲得該行的數據。

var data = table.fnGetData($rowNode); 

fnGetData acccepts行節點或一個整數,所以可以傳遞的行索引作爲參數太。

demo

+0

我該如何去獲取傳入的ID中相應的行索引? – Silverwulf

+1

@CraigThompson在我的代碼中,我使用'eq'在索引0上獲得'tr',可以將其更改爲'eq(1)','eq(2)','eq(n)'。或者使用'index()'。 –

+0

@CraigThompson爲什麼要獲取行索引,可以將行節點作爲參數傳遞。 –

1

如果使用TableTools擴展,那麼你可以使用fnSelect()。從docs

$(document).ready(function() { 
    $('#example1').dataTable({ 
     "sDom": 'T<"clear">lfrtip', 
     "oTableTools": { 
      "sRowSelect": "single" 
     } 
    }); 

    // Select the first row in the table automatically 
    var oTT = TableTools.fnGetInstance('example1'); 
    oTT.fnSelect($('#example tbody tr')[0]); 
}); 

你會當然要修改的選擇,因此選擇具有您的ID行。

+0

不幸的是,我不知道如何修改該選擇器來選擇正確的行。 – Silverwulf