Frage

Ich habe eine große Datenbank-Tabelle, die ich auf einem Windows-Formular angezeigt werden muß. Die Daten sind so etwas wie eine „Kategorienliste“, die ich brauche in einer treeview artigen Struktur für den Benutzer angezeigt wird, gibt es Kategorien mit mehr Unterkategorien. Treeview Kontrolle hat Verzögerung Laden, aber das Problem ist es hunderttausend Wurzelknoten mit 4 Säulen String-Wert sein könnte. Ich habe versucht, 100.000 Knoten zu einem TreeView hinzugefügt und es dauerte 5 Minuten. Gibt es noch andere Optionen für eine solche Operation? Können Sie mir irgendwelche Ideen geben? Es ist nicht wurde ein treeview sein ..

War es hilfreich?

Lösung 5

Ich beschloss, einen virtuellen / Server-Modus für die treeview zu implementieren.

Danke für die Antworten.

Andere Tipps

Das ist eine Menge von Knoten, aber haben Sie versucht Aufruf Beginupdate () und dann EndUpdate (), wenn Sie die Liste der Knoten der Baumstruktur hinzugefügt? Das wäre wahrscheinlich die Leistung etwas bringen!

http://msdn.microsoft .com / en-us / library / system.windows.forms.treeview.beginupdate.aspx

Für Anwendungen wie diese, neige ich dazu, Funktionen zu implementieren, wie „Suche während des Tippens“, die Kategorienamen zurückkehren würde, wie sie in ein Textfeld eingegeben werden. Zum Beispiel auf jedem Tastendruck, würde ich auf die DB und gebe die Top 10 oder so Werte, die in dem Textfeld mit dem, was beginnen zurück. Bei mehr als 10 ist, gebe ich entweder, dass weitere Ergebnisse vorhanden sind, oder ich sage ihnen, ihre Suche zu verfeinern. IMO Direktsuche immer Trümpfe und / oder Paging-Sortierung. Ich hasse Paging. Es ist fast immer ein Eingeständnis, dass Ihre Suchfunktionalität ist nicht gut genug!

Vielleicht eine Art von Paging-Mechanismus implementieren. 100.000 Artikel in einer TreeView wäre sehr schwierig, aus der Perspektive eines Benutzers zu lesen. Bereitstellung von nur 1.000 oder sogar weniger Wurzelknoten zu einer Zeit, würde auf den Ladezeiten sicherlich reduzieren.

Sie können die Cache-Funktionen verwenden. 20000 Datensätze erfolgt in der Regel 0,2s zu laden. Überprüfen Sie die Sprachunterstützung, um es zu benutzen.

Grüße,

TreeView hat ein Ereignis Before. Sie können es verwenden, on the fly zu bestimmen, welche Knoteninhalt zu laden. Das heißt, Sie erste Last nur der Top-Level-Knoten in Ihrem TreeView.

Wenn der Benutzer über einen Knoten zu erweitern, um die erforderlichen Daten abrufen kann und die untergeordneten Knoten dieses Knotens füllen. Verwenden Sie die Tag-Eigenschaft von TreeNode eine ID zu speichern, die Daten, zu denen gehört Knoten.

Stellen Sie sicher, Beginupdate () und EndUpdate () oder verwenden AddRange () anstelle von Add () verwenden Knoten hinzuzufügen, weil es viel schneller ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top