Zamislite situaciju: DataTables korišten za pregledavanje kataloga knjiga. Svaka knjiga ima svoje autore.
Pitanje je slijedeće: kako proširiti filter sa još jednim select elementom u kojem su imena autora kojim bi se filtrirali rezultati na samo jednog autora?
Uhvatio vremena pa se poigrao vezano uz spomenutu ideju :)
Imao sam problema kod mysql joina na više od jedne tablice ali to sam uspješno rješio.
Malo sam proučio primjere na http://datatables.net/ i vidio primjer DataTables individual column filtering example i vidio da se kod individualnog filtriranja tablica sprema u varijablu
var oTable = $('#example').dataTable( {
"sDom": '<"top"i>rt<"bottom"pl><"clear">',//"sDom": 'T<"clear">lfrtip',
"aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "sve"]],
"sScrollX": "100%",
"bFilter": true,
"bScrollCollapse": true,
"bPaginate": true,
"sPaginationType": "full_numbers",
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "examples/ajax/ajaxjson-horor.php"
} );
i da se ajax call poziva...
$("#tfoot input").keyup( function () {
/* Filter on the column (the index) of this element */
oTable.fnFilter( this.value, $("tfoot input").index(this) );
} );
Zatim sam krenuo na 2 tablice, i dva dataTables objekta i tu je zapelo. Obje tablice imaju po 15 kolona i svaka kolona ima individualni filter.Obje tablice su unutar jQuery UI tabova,
varijable u kojima su dataTable objekti su oTable i aTable. Svaka ima svoj ajaxSource. Nakon deklaracije pokušao sam dobiti da filteri na obje tablice rade. Na prvoj rade bez greške ali kad na drugoj pogledam varijable koje su poslane $_GET metodom nema mojih testnih vrijednosti. pa ne dobijem točan izlist vrijednosti.
Gornju funkciju sam modificirao, promijenivši selektor sa tfoot input na konkretan id.
$("#td_alb_naslov").keyup( function () {
/* Filter on the column (the index) of this element */
oTable.fnFilter( this.value, $("tfoot input").index(this) );
} );
$("#td_alb_izdavac").keyup( function () {
/* Filter on the column (the index) of this element */
oTable.fnFilter( this.value, $("tfoot input").index(this) );
} );
$("#td_traka_naslov").keyup( function () {
/* Filter on the column (the index) of this element */
aTable.fnFilter( this.value, $("tfoot input").index(this) );
} );
$("#td_traka_izvodjac").keyup( function () {
/* Filter on the column (the index) of this element */
aTable.fnFilter( this.value, $("tfoot input").index(this) );
Prva dva elementa rade; odnose se na 1. dataTables objekt, ali kad u Firebug-u pogledam ajax call koji oizivaju druga 2 elementa, parametri vazani za filtere su slijedeći:
sSearch ,
sSearch_0,
sSearch_1,
sSearch_10
sSearch_11,
sSearch_12,
sSearch_13,
sSearch_14,
sSearch_2,
sSearch_3,
sSearch_4,
sSearch_5,
sSearch_6,
sSearch_7,
sSearch_8,
sSearch_9...
isti kao i kod poziva sa 1. objekta ali bez vrijednosti.
Pitanje glasi: kako se u konkretnom slučaju referencirati na pojedinu tablicu?
Hvala unaprjed.
Siniša