J'ai un bouton qui applique un filtre à jquery datatable
$("#buttonFilter").button().click(function() {
if (lboxColor.val() != null) {
jqTable.fnFilter($("option:selected", lboxColor).text(), 1);
}
});
Il me montre par exemple 47 lignes sur 60. J'ai essayé .fnGetData () et fnGetNodes () mais il affiche toutes les lignes, mais pas filtré. Comment pourrais-je obtenir 47 lignes?
Je cherche depuis environ une heure, si vous souhaitez utiliser DataTables 1.10+ si vous souhaitez obtenir les lignes filtrées (meilleur terme: "recherché"):
var table = $('.table').DataTable({...});
function selectOnlyFiltered(){
var filteredRows = table.rows({filter: 'applied'});
}
Pour les tables de données 1.9 et ultérieures, cette solution fonctionne:
myDataTableHandle = $('#example1').dataTable(...);
...
...
var myFilteredRows = myDataTableHandle._('tr', {"filter":"applied"});
et vous n'aurez pas à inclure un plugin api séparé. :)
Juste au cas où vous voudriez une collection de noeuds (éléments DOM) exactement comme fngetNodes (), vous pouvez utiliser le '$' au lieu du '_' comme ceci table.$('tr', {"filter":"applied"});
le '_' renvoie une collection de 'TR' (éléments HTML).
Pour ceux qui sont intéressés, il s’agit d’un cas concret.
/**
* Select all the elements of the datatable which match the current user
* search (or all if no search).
*/
function dtable_selectAll()
{
idTable = 'myDataTable';
var rows = $('#' + idTable).dataTable()
.$('tr', {"filter":"applied"});
var oTT = TableTools.fnGetInstance(idTable);
$(rows).each(function (index, el){
oTT.fnSelect(el);
})
}
J'espère que ça aide.