preload
Dez 12

ExtJS: Restore grid scroll position after store reload

Werden von einem Grid aus Daten bearbeitet (bspw. durch RowEditing oder Popup), wird nach dem Speichern der Store aktualisiert (bspw. store.load()). Damit nach dem Reload das Grid nicht in die obere linke Ecke zurückscrollt, sondern an der Position bleibt, an der es sich auch zuvor befunden hat, genügt es, in der viewConfig des GridPanels die Eigenschaft preserveScrollOnRefresh auf true zu setzen, was bspw. wie folgt aussehen kann:

  
var grid = Ext.create('Ext.grid.Panel', {
  ...
  viewConfig: {
    ...
    preserveScrollOnRefresh: true,
    ...
  },
  ...
});

Andere Vorgehensweisen, wie bspw. die undokumentierte Eigenschaft invalidateScrollerOnRefresh auf false zu setzen funktioniert zwar bei Updates, bringt jedoch Probleme mit sich, wenn Datensätze gelöscht oder erzeugt werden. Dafür sind wiederum Workarounds notwendig, die man sich ganz einfach sparen kann, indem man die o.g. Methode mit preserveScrollOnRefresh in der viewConfig auf true setzt.

Leave a Reply