So pflegen Sie jQuery DataTables blättern Position nach .draw ()

8

Ich benutze jQuery Datatables Plugin für eine kleine Tabelle (12 Zeilen). Einige <input type="text" ... Felder erlauben die Bearbeitung. Wenn das Eingabefeld den Fokus verliert, muss ich seinen Wert validieren und möglicherweise den Feldwert ändern. Ich konnte keine geänderten Eingabefeldwerte abrufen, die von DataTables erkannt werden, ohne anschließend .draw() auszugeben. Dies führt jedoch dazu, dass die Tabelle zum Anfang der Tabelle blättert.

Gibt es eine Möglichkeit, die aktuelle Bildlaufposition nach dem Ausgeben eines .draw () zu erhalten?

%Vor%

BEARBEITEN

Ich habe gesehen, dass jemand versucht hat, dasselbe zu tun, was ich bin, und sie haben angegeben, dass der folgende Code für sie funktioniert. Dies scheint eine sehr einfache Art zu sein, das zu erreichen, was ich brauche, aber ich bekomme scrollTop = 0 immer selbst. Jeder sieht, wie ich den Zeilenindex der aktuell ausgewählten Zeile bekommen kann?

%Vor%     
rwkiii 27.12.2014, 01:59
quelle

7 Antworten

3

Ich glaube nicht, dass Sie das können, aber Sie können stattdessen die Callback-Funktion verwenden:

%Vor%

Hinweis: Ссылка

    
JC Sama 27.12.2014, 02:22
quelle
9
%Vor%

Das scheint für mich zu funktionieren. Ich musste nur die div.dataTables_scrollBody finden, nachdem die Tabelle gezeichnet wurde.

    
Paul Matthew 08.07.2016 23:00
quelle
5

Ich wollte das hier nur hinzufügen, obwohl es ein etwas anderes Szenario ist - Es funktionierte für meinen Fall und wird wahrscheinlich für einige andere nützlich sein, die hier nach Antworten suchen.

Ich benutze serverseitige Verarbeitung und führe alle 10 Sekunden eine Aktualisierung der Tabellendaten mit table.ajax.reload() durch. Diese Funktion akzeptiert ein Argument, um den aktuellen Paging-Wert beizubehalten, kann aber die Bildlaufposition nicht beibehalten. Die Lösung war der des OPs sehr ähnlich und legt die Scroll-Position beim Callback fest. Nicht sicher, warum es für ihn nicht funktioniert hat, aber hier ist der Intervallcode, den ich mit Erfolg verwende:

%Vor%     
billynoah 14.07.2015 18:17
quelle
2

Wie ich es mit DataTables 1.10 gelöst habe, verwende preDrawCallBack , um die ScrollTop-Position und dann DrawCallback , um es einzustellen.

%Vor%     
sur 11.03.2016 09:19
quelle
0

Wie wäre es mit diesem Hack? Es beinhaltet nicht scrollTop() Öffnen Sie zuerst jquery.dataTables.js und suchen Sie nach dieser Zeile und entfernen Sie sie:

%Vor%

Danach fügen Sie den folgenden Code vor Ihren draw () / clear () Aufruf:

%Vor%

Es hat einige Zeit gedauert, um das herauszufinden.

    
PatlaDJ 19.06.2017 22:08
quelle
0

Der folgende Code behält die Bildlaufposition beim erneuten Laden des Servers von Datatables bei.

%Vor%     
DragonSpirit 18.09.2017 16:12
quelle
0

Wenn Sie der Funktion draw den Parameter 'page' übergeben, wird die Tabelle beim Scrollen nicht verschoben, sondern von der Quelle '.DataTable' erneut gelesen. Z.B. nach dem "Speichern" von Daten, die die DataTable aktualisiert:

$ ("Ihr-Selektor"). DataTable (). row (t_itemid) .invalidate (); $ ("your-selector"). DataTable (). row (t_itemid) .draw ('Seite');

Hinweis: Ich benutze eine Spalte "ID" in meiner DataTable-Installation, die es einfach macht, direkt mit einer einzelnen Zeile zu arbeiten. Aber ich glaube, der Parameter 'Seite' wird das gewünschte Ergebnis liefern.

    
Charlie 15.03.2018 18:26
quelle