2017-05-08 4 views
-2

Ich baue eine Windows-Formular-Anwendung, wo ich will, wenn ich ein Formular wie Produkt öffnen, sollte es alle aufgeführten Produkt in der Datenbank verfügbar laden. Zusammen mit Bildern. und zeigt es in DataGridView. Nun ist meine Frage, was ist der beste Weg, um so viele Daten in einer Gridview zu laden?Windows Form DataGridView Schnell Laden

+2

Datenvirtualisierung. Sie können auch die Leistung des Steuerelements verbessern (siehe z. B. [this] (http://stackoverflow.com/q/4255148/1997232)). Aber wenn die Frage steht, ist es zu früh, um sie zu stellen. Hast du irgendwas probiert? Worüber bist du nicht glücklich? – Sinatr

+0

die Leistung des Gitters. wenn ich so viele Daten lade, wird es (gui) sehr oft gehängt – Siraj

Antwort

0

Wenn Sie Daten in einer DataGridView anzeigen möchten, und Sie vermuten, dass viele Daten vorhanden sind (möglicherweise so sehr, dass es möglicherweise problematisch ist, sie vollständig in den Speicher zu laden), sollten Sie ihre VirtualMode-Funktionen verwenden. Siehe die MSDN-Artikel "Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control":

„Wenn Sie sehr große Mengen von tabellarischen Daten in einem Datagridview-Steuerelement angezeigt werden möchten, können Sie die Virtualmode-Eigenschaft auf true gesetzt und ausdrücklich die Kontrolle der Interaktion mit seinen Datenspeicher verwalten Dies. In dieser Situation können Sie die Leistung des Steuerelements optimieren. "

Grundsätzlich bedeutet virtuellen Modus, dass die DataGridView Steuerung die CellValueNeeded event erhöhen, wenn sie Daten benötigt. Sie abonnieren einen Handler für dieses Ereignis und holen die erforderlichen Daten "Just-in-Time". Dies ermöglicht es, nur einen Bruchteil des gesamten Datensatzes im Speicher zu behalten.

Es liegt an Ihnen, welche und wie viele Datensätze Sie im Speicher behalten. Einige mögliche Strategien:

  • Sie führen Paging durch, d. H. Sie laden einen Block zusammenhängender Zeilen aus der Datenbank. Dies erfordert eine bekannte Reihenfolge. Das heißt, Sie müssen eine ORDER BY SQL-Klausel aus Ihrer aktuellen Sortierung DataGridView ableiten können. (Schauen Sie sich "Using OFFSET and FETCH to limit the rows returned" an, um zu sehen, wie Paging auf SQL-Ebene implementiert werden kann.)

  • Sie holen einzelne Zeilen aus der Datenbank. Dies ist möglicherweise weniger effizient als Paging, funktioniert aber besser, wenn Sie keine ORDER BY-Klausel ermitteln können, die den aktuellen Sortierkriterien von DataGridView entspricht.

  • In beiden Fällen finden Sie in dem Artikel, den ich oben verlinkt habe, ein Tutorial zur Verwendung des virtuellen Modus.