Ich fülle das Datagrid mit 250 Zeilen. Wenn der Benutzer mit der Bildlaufleiste nach unten scrollt (z. B. unter 75%), möchte ich die nächsten 250 Zeilen aus der Datenbank abrufen und so weiter. Die Idee ist, dass das Grid Millionen von Ergebnissen haben kann und wir nicht alle laden wollen, bis der Benutzer sie anfordert. Gibt es dafür einen Mechanismus?
EDIT: Weil es eine Menge Verwirrung zu geben scheint: Ich suche nicht nach den Standardlösungen für die Datenvirtualisierung, ich benutze bereits sie . Aber alle erfordern, dass Sie die Anzahl der "virtuellen Zeilen" im Voraus angeben, und diese Abfrage ist für mich zu teuer. Der Grund, warum sie es benötigen, ist, weil es so viel einfacher ist, die aktuelle Seite / Offset / etc zu berechnen, wenn Sie die gesamten Elemente im Raster kennen. Aber es ist eine sehr teure SQL-Abfrage, um diesen Betrag zu berechnen, also möchte ich zu einer anderen Lösung migrieren, wo ich die COUNT () Abfrage überspringen kann.
Es sieht so aus, als ob die Virtualisierungseigenschaft von DataGrid Ihnen nicht helfen würde, da ein vollständiger Datensatz in ItemsSource
benötigt wird.
So, um ein Daten-Lazy-Laden zu haben (Siehe einen Artikel Datenvirtualisierung ) Sie können mit < a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.scrollchanged.aspx"> ScrollViewer.ScrollChanged Ereignis und wenden einen klassischen serverseitigen Paging-Ansatz an . Grundsätzlich müssen Sie solche Zeichen wie Page Size
, Page Number
, Sort Order
definieren und berechnen. Auf diese Weise können Sie von einer Datenbank einen benötigten Datensatz anfordern und auf der Benutzeroberfläche anzeigen. Jedes Mal, wenn sich Current Page Number
oder Sort Order
ändert, musst du Daten anfordern und ItemsSource
des Rasters aktualisieren, vielleicht musst du auch die Scroll-Position wiederherstellen, aber ich bin mir nicht sicher.
Ich glaube, eine Hauptherausforderung wäre, einen Wert von Page Size, Current Page Number zu berechnen. Ich glaube, Logical Scrolling Modus würde Ihnen dabei helfen.
Tags und Links wpf scroll database virtualization datagrid