Frage

Ich bin in einer Situation, in der ich einen Baum anzeigen muss. Einige der Knoten haben jedoch 35000 Kinderknoten (direkte Kind!). Dies ist natürlich viel zu verlangsamen.

Ich würde lieber sehen, dass der Baum nur die Knoten lädt, die im Browser -Ansichtsfenster sichtbar sind.

Solche Bäume existieren für Winforms und C ++. Weiß einer von Ihnen, ob ein solcher Baum für ASP.NET existiert?

Wir verwenden derzeit die Telerik Treeview, was eine schöne Kontrolle ist, unterstützt aber die beschriebene Situation nicht.

zusätzliche Fragen

Aus Sicht der Benutzerfreundlichkeit: Wie gehen Sie mit solchen Bäumen um? Es ist schön, 35000 Knoten auf einer Ebene anzuzeigen, aber wie finden Sie etwas in diesem Baum? Verwenden Sie Paging in einem Baum? oder ein Suchfeld? Oder zusätzliche Levels hinzufügen?

War es hilfreich?

Lösung

Bei diesen vielen Knoten, selbst wenn Sie eine leistungsfähige Möglichkeit finden, sie anzuzeigen, wird dies wahrscheinlich nicht sehr nutzbar von Ihren Benutzern sein. Stellen Sie sich vor, Sie versuchen, durch 35.000 Knoten zu scrollen, um den Knoten zu finden, an dem Sie interessiert sind! Gleiches gilt für Paging. Geht ein Benutzer wirklich auf Seite 3500 Seiten (vorausgesetzt, eine Seitengröße von 10), um sein Ziel zu finden? Wahrscheinlich nicht, und wenn sie es tun, werden sie wahrscheinlich nicht zu glücklich sein. :)

Stattdessen finde ich es mit großen Datensätzen wie diesen in der Regel am besten, eine Art "Filter" -Ver Benutzeroberfläche bereitzustellen. Etwas, das es Ihrem Benutzer ermöglicht, die verfügbaren Daten in eine überschaubare Sammlung zu "formen".

Ich bin mir nicht sicher, welche Fähigkeit Sie zur Filterung bereitstellen müssen (dh, auf welchen Feldern Sie möglicherweise filtern), aber ich denke, das ist Ihre beste Wahl. Optionen für die Benutzeroberfläche sind:

  1. Etwas wie Radgrid für ASP.NET AJAX, das eine integrierte Filter-Benutzeroberfläche bereitstellen kann, mit der Benutzer schnell die Werte finden können, an denen sie interessiert sind.
  2. Verwenden der Client-Seite-API des RadTreeview und der Unterstützung für das Laden von Knoten On-Demand können ein Textfeld erstellen, das die Knoten im Baum als Benutzertyp filtert. Sie verarbeiten einfach das OnKeyUp -Ereignis des Textbox und schießen dann eine Anfrage an einen Webdienst, um die Knoten zu greifen, die die Filterkriterien erfüllen, und die Knotensammlung Ihres TreeView durch das Ergebnis ersetzen. Das wird es schaffen viel Leichter für Ihre Benutzer, ihren Zielknoten zu finden.

Offensichtlich gibt es auch andere Ansätze, aber hoffentlich gibt es Ihnen einige Ideen.

Kurze Antwort: Für große Datensätze würde ich eine Kombination aus Echtzeitfilter- und Webdiensten verwenden, um meinen Benutzern ein überschaubares Ergebnis vorzustellen. Für die anfängliche Last würde ich nur die ersten (sagen wir) 200 Knoten laden, um die Leistung hoch zu halten.

Hoffe das hilft! -Todd

Andere Tipps

Ich weiß, dass es einige JQuery -Bäume -Steuerelemente gibt. Kenne die Namen nicht aus der Hand. Die ASP.NET -Baumsteuerung unterstützt dies definitiv nicht, da es nicht ajaxifierbar ist. Für das Problem mit 35000 Knoten würde ich sie so einstellen.

node
|
-- Sub Node 1
|
-- ...
|
-- Sub Node n
|
-- more...

Wenn Sie mehr übergehen oder darauf klicken, wird mehr Knoten erhalten. Wenn Sie 100 Subknoten anzeigen, würde ich 200 laden und die anderen 100 ausblenden. Auf diese Weise, wenn Sie über mehr schweben, erscheint es intantan. Und jedes Mal, wenn Sie mehr übergehen ... werden die nächsten versteckten 100 geladen.

Außerdem ist es nicht so schwierig, einen benutzerdefinierten Baumsteuerung heutzutage mit allen Uplevel -Browsern zu erstellen. <ul> und <li> verschachtelt, um Knoten und Unterknoten zu erstellen und dann das entsprechende Styling anzuwenden. Das <li> Kann Links in sich haben, wenn Sie das Ganze erleichtern möchten, um das Klicken zu erleichtern.

Meine zwei Cent.

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