2016-08-04 8 views
1

Ich verwende DataTables Version 1.10.10. Ich weiß, dass ich eine Funktion in der FnDrawCallback hinzufügen kann, wenn ich Daten in einer bestimmten Tabelle initiiere, jedoch habe ich eine Menge Seiten mit Tabellenaufrufen und müsste jedes einzelne aktualisieren.DataTables 1.10.10 - Funktion zum Aufrufen jedes Mal hinzufügen

Ich frage mich, wo in den DataTables-Code kann ich eine neue Funktion, die automatisch auf der DrawCallback-Funktion vor zusätzlichen Funktionen, die während der Initialisierungsphase hinzugefügt werden.

Kann mir jemand auf die richtige Stelle zeigen?

+0

Wollen Sie sagen, dass Sie 'fnDrawCallback' grundlegend ändern wollen (damit es Ihre neue Funktion zusätzlich zu seinem normalen Verhalten aufruft), so dass * jede * Verwendung der DataTables-Initialisierung auf Ihrer Site die geänderte Version verwendet? –

+0

@ChrisH. - Ja das ist GENAU, was ich machen möchte. – Phil

+0

@ChrisH. Eigentlich wäre es noch besser, wenn ich ein paar Zeilen Code hinzufügen könnte, wo dataTable initialisiert, so kann ich das DOM für eine Eingabe mit einer bestimmten ID überprüfen – Phil

Antwort

1

Ich sehe hier zwei Möglichkeiten. Option A ist viel einfacher zu implementieren, aber Sie müssen Ihre Funktion bei jeder Initialisierung von DataTables aufrufen. Option B benötigt viel weniger Code (und ist wahrscheinlich näher an dem, was Sie wirklich tun wollen), wird aber möglicherweise sehr schwierig und könnte unbeabsichtigte Konsequenzen haben.

Option A

Sie eine .js Skriptdatei erstellen können, die Sie in allen Ihren Seiten umfassen (wie, wie Sie vermutlich schon gehören die Tables .js Dateien), die Ihre benutzerdefinierte Funktion definiert. Dann müssen Sie nur noch den Funktionsaufruf an die Spitze der fnDrawCallback Option setzen. Wie Sie erwähnt haben:

Ich habe eine Menge Seiten mit Tabellenaufrufen und müsste jedes einzelne von ihnen aktualisieren.

Diese lindern nicht wirklich das Problem (und es ist wahrscheinlich, Sie dies bereits berücksichtigt, so traurig, wenn es nicht hilfreich ist), aber während es vorne auf ein wenig mehr Grunzenarbeit beinhalten kann, einige der Herausforderungen vermeiden und Risiken von Option B. Es bedeutet, dass Sie Ihre benutzerdefinierte Funktion nicht auf jeder Seite neu definieren müssen, aber Sie müssen sie immer noch aufrufen. Wenn Sie wirklich nicht wollen, dass Blick auf Option B. tun

Option B

Sie in die eigentliche jquery.dataTables.js Datei gehen und versuchen, die fnDrawCallback Funktion Standardverhalten außer Kraft zu setzen Ihre Funktion aufzurufen. Der Vorteil dieser Option ist, dass Sie Ihre benutzerdefinierte Funktion nicht mehr als einmal verwenden müssen. Der Nachteil ist, dass Sie, wenn Sie Ihre benutzerdefinierte Version nicht verwenden möchten, diese bei der Initialisierung manuell überschreiben müssen.

Faire Warnung, ich habe das nie wirklich versucht, so dass ich dich nicht in die richtige Richtung lenken kann, kann ich nicht viel helfen.

Ich habe Version 1.10.12 von DT, aber nicht viel hat sich geändert, also hoffentlich ist diese Information relevant. In meiner Version von jquery.DataTables.js ist die fnDrawCallback Funktion in Zeile 10614 (Sie können natürlich nur eine Suche nach der Datei durchführen, um die genaue Zeile für Ihre Version zu erhalten). Dort können Sie das Standardverhalten von fnDrawCallback neu definieren. (Sie können einige Beispiele dafür finden, wie Sie dies von den anderen im selben Abschnitt definierten Funktionen oder den Kommentaren zu jeder Funktion tun können).

Hinweis

Sie können natürlich außer Kraft setzen so ziemlich alles in Tables aus dieser Skriptdatei, aber das geht zu sein ist nicht gut unterstützt oder gut dokumentiert, so dass, wenn Sie wählen Option B (was scheint mehr mit dem, was Sie tun wollen, zu tun) leicht treten.

+0

ausgezeichnete Antwort, danke! – Phil