2014-10-07 5 views
5

Ich verwende Datentabellen mit benutzerdefinierter serverseitiger Filterung, Suche und Sortierung ... warum gibt der columnFilter() einen Fehler zurück "TypeError: $ (...). . Datatable (...) columnFilter ist keine Funktion "jquery datatables: columnFilter() ist kein Funktionsfehler

hier, wie ich columnFilter verwenden:

var table = $('#item-table').DataTable({ 
    ajax: '<?= site_url("price_update"); ?>', 
    serverSide: true, 
    processing: true, 
    paging: true 
}).columnFilter(); 

mein Code ohne" .columnFilter()“funktioniert gut.

+0

DataTable() oder dataTable()? – Mate

+0

DataTable() mit dem Großbuchstaben D –

+0

Version? 1.10.2? – Mate

Antwort

10

Sie müssen verwenden Sie den "oldschool" dataTable() Konstruktor, wenn Sie columnFilter verwenden. Proof of Concept:

funktioniert nicht produziert gleichen Fehler wie in der Frage:
columnFilter mit 1.10.x instanziiert mit DataTable() ->http://jsfiddle.net/87kam74q/

arbeitet:
columnFilter mit 1,10. x instanziiert mit dataTable() ->http://jsfiddle.net/LvL4vm8e/

Der Grund dafür ist, dass columnFilter davon ausgeht, dass das "alte" jQuery-Objekt und nicht das neue API-Objekt ausgeführt wird. Obwohl, können Sie immer noch die neue API durch die Methode .api() zuzugreifen, zum Beispiel:

var table = $('#example').dataTable(); 
table.api().search('test').draw(); 

Wenn Sie nicht durch table.api() für die Verwendung des neuen AP gehen wollen, und beharrt auf mit DataTable(), können Sie erreichen das gleiche durch die Verkettung aufgeben:

var table = $('#example').DataTable(); 
$('#example').dataTable().columnFilter({ 
    sPlaceHolder : 'head:before', 
    aoColumns: [ { type: "text"}, 
       { type: "text"}, 
       { type: "text"}, 
       { type: "text"}, 
       { type: "text"} 
       ] 
}); 

Geige ->http://jsfiddle.net/qbr01oya/. Dies führt nicht dazu, dass die DataTable zweimal initialisiert wird (dataTables überprüft dies).

+0

danke für das aufräumen für mich .. dann ist der einzige Weg, dies jetzt mit der nicht "oldschool" DataTable zu tun, um eine API dafür in diesem Moment zu machen? –

+0

@ChristianBurgos, ja - aber wenn Sie die Punktkette aufgeben, können Sie beides tun. Siehe aktualisierte Antwort. – davidkonrad

+0

gilt dies für die serverseitige Verarbeitung? –