SlickGrid vertikalen scroll-Balken nicht richtig angezeigt, es sei denn, der filter wird angezeigt/ausgeblendet, um die Größe des Viewports
Ich bin gerade erst anfangen zu verwenden SlickGrid aber ich hatte eine Menge Erfolg mit der Erstellung einer remote-Modell, das die Interaktion mit den paging-plugin. Das einzige problem das ich habe scheint ein browser-Problem, aber ich bin neugierig, ob jemand weiß einen trick, dass kann das Problem beheben.
Ich bin das abrufen der Daten, Seite um Seite in meinem Modell über AJAX und aktualisieren Sie das Diagramm mit den grid.setData()
und grid.render()
Methoden.
Das problem würde ich gerne lösen, ist, dass, wenn die Länge der Daten ändert sich die vertikale Bildlaufleiste wird langsam echt verwirrt, es sei denn, ich ändere die aktuelle Sichtbarkeit des filter-Panels (grid.hideTopPanel()
oder grid.showTopPanel()
). Von verwirrt, ich meine, dass die scroll-handle in der Bildlaufleiste ändert sich nicht, Größe zu zeigen die unterschiedliche Anzahl von Zeilen, die jetzt aktuelle, und wenn die Liste wächst, die scroll-Griff-Größe springt ganz über dem Platz, wie ich nach oben und unten scrollen.
Ich gehe davon aus, dass der "fix" funktioniert, weil es zwingt den browser, um eine Neuberechnung der view-port der Höhe, aber gibt es eine Möglichkeit zu erzwingen, dass das passiert? Oder gibt es eine bessere Weise, das zu tun, was ich versuche zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok mleibman richtete mir aus, was ich eigentlich suchte war
grid.updateRowCount()
. Ich glaube, er wird hinzufügen, einen Anruf zu dieser ingrid.setData()
, aber für jetzt nur sicherstellen, dass die 2 Methode ruft gemeinsam verwendet werden.Haben Sie versucht
grid.invalidate()
? Im meiner Erfahrung, dass Kräfte, das Gitter neu zu berechnen so ziemlich alles. Es kann sein, mehr heavy-handed, als Sie brauchen, aber zumindest kann man sehen, wenn eine invalidate löst das problem.setData()
mehrere Male. Du hast Recht, wenn Sie halten zurücksetzen der Daten-Referenz, dann erhalten Sie eineinvalidate()
jeder Zeit sowieso. Froh, Sie gefunden zu beheben.Habe ich es herausgefunden. Müssen Sie rufen Sie
grid.resizeCanvas()
nach dem Aufrufgrid.setData()
. Wie es scheint, sollte dies Teil dergrid.setData()
Methode, weil ein Aufruf der Funktion ändern Sie die Anzahl der Zeilen. Aber wie auch immer, das ist, was Sie tun müssen.