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% Das scheint für mich zu funktionieren. Ich musste nur die div.dataTables_scrollBody
finden, nachdem die Tabelle gezeichnet wurde.
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:
Wie ich es mit DataTables 1.10 gelöst habe, verwende preDrawCallBack , um die ScrollTop-Position und dann DrawCallback , um es einzustellen.
%Vor% 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:
Danach fügen Sie den folgenden Code vor Ihren draw () / clear () Aufruf:
%Vor%Es hat einige Zeit gedauert, um das herauszufinden.
Der folgende Code behält die Bildlaufposition beim erneuten Laden des Servers von Datatables bei.
%Vor%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.
Tags und Links jquery datatables jquery-datatables