2016-11-21 127 views
2

我的警報正在工作,但我不知道如何使用rowData過濾我的其他數據表實例。 這裏是我的codepen:http://codepen.io/smuglovsky/pen/YpNjXm?editors=1010Datatables獲取行數據,然後做fn.dataTable.ext.search.push

我學會了如何「點擊每一行和獲取數據」在這裏:https://datatables.net/release-datatables/examples/advanced_init/events_live.html

我也發現瞭如何在這裏「從被點擊的行獲取數據」: https://datatables.net/reference/type/row-selector

我知道我幾乎沒有,但我堅持我的codepen 460線:

$('#example-sections tbody').on('click', 'tr', function() { 
    var data = table_sections.row(this).data(); 
    var rowData = table_sections.row(this).data(); 
    // ... do something with rowData 
    alert('You clicked on ' + data[0] + '\'s row'); 
    $.fn.dataTable.ext.search.push(
     function(settings, data, rows, dataIndex, rowIndex, rowData) { 
     // I want to filter the rowData, just like the alert is doing 
     return data[0] == +data[0] ? true : false; 
     } 
    ); 
    table_main.draw(); 
    table_books.draw(); 
    $.fn.dataTable.ext.search.pop(); 
    }); 

回答

1

因此,使用「$ .fn.dataTable.ext.search」增加了一個搜索自定義函數到所有數據ta ble實例。我想你在這裏想要使用來自特定網格行點擊的值過濾其他DataTable實例。如果是這樣,你會想要解決這個問題有點不同。

以下解決方案假定「示例部分」網格的第一列對應於您要在「table_main」和「table_books」列上搜索的列。如果是這樣,您只需使用索引獲取「table_main」和「table_books」的列,然後使用您單擊的行中的數據應用搜索即可。

$('#example-sections tbody').on('click', 'tr', function() { 
    var rowData = table_sections.row(this).data(); 
    // ... do something with rowData 
    alert('You clicked on ' + rowData[0] + '\'s row'); 

    // Lets build a regular expression that will give only exact matches. 
    var searchRegExp = new RegExp("^" + rowData[0] + "$"); 

    // Ok so we are going to use a regex. Second param is to turn on 
    // search by a regular expression. The third param is to turn off "smart" 
    // searching which would conflict. The last param is to turn off case 
    // insensitive matching. 
    table_main.column(0).search(searchRegExp, true, false, false).draw(); 
    table_books.column(0).search(searchRegExp, true, false, false).draw(); 
}); 

注:對於「table_main.column(0)」中的「0」是在數據集中,所以如果你有隱藏的列對這一指數的數列的索引。例如,假設我的第一個可見列是「ID」列,但我有兩個隱藏列,在「ID」列之前的「列」定義內定義,然後「ID」列的索引將爲「2」而不是「0」。

編輯:更改搜索到只返回完全匹配。參考:https://datatables.net/reference/api/search()

+0

非常感謝你Aliester!它工作得非常好。我有一個問題:它過濾所有的紅色1,但我也得到了像11,12,21等紅色1。我需要一個「完全匹配」。 我加了下劃線,像這樣的「_1_」。我試過「<1>」,但顯然數據表不喜歡這些。 由於http://crossorigin.me/發生故障,我的代碼簿暫時不工作。我嘗試過小提琴,plunkr&jsbin,但沒有成功。可以想到另一個Cors? :)在此期間,請看看這裏:http://solidarityfarm.tk/AdminLTE-master/pages/layout/_______o_tE_029.html 再次,非常感謝這麼多的朋友! –

+0

@ user2792945我認爲默認情況下它會執行「LIKE」類型的搜索而不是完全匹配。讓我看看我能否弄清楚。 – Adrian

+0

@ user2792945嘗試上面更新的代碼。我認爲那會鍛鍊。 – Adrian

相關問題