Announcement

Collapse
No announcement yet.

TreeView erstellen aus Informationen einer DB

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TreeView erstellen aus Informationen einer DB

    Ich habe eine DB in der Informationen stehen, die ich dem User als Treeview anzeigen möchte. Bsp. Kundendatenbank:

    - root
    ----kunde1
    ------Bestellung1
    ----------Infos
    ------Bestellung2
    ----------Infos
    ----kunde2
    ------Bestellung1
    ----------Infos
    ------Bestellung2
    ----------Infos

    Bisher hatte ich es so gelöst, dass ich die Informationen nach und nach aus der DB abfrage (mittels ExecuteReader()) und dann in die Treeview einfüge.

    Zuerst frage ich die Datenbank nach allen Personen und füge diese als Knoten unter den root ein.

    - root
    ----kunde1
    ----kunde2

    Dann frage ich wiederum für jede Person die Bestellungen nach und füge auch hierfür wieder die Knoten ein.

    - root
    ----kunde1
    ------Bestellung1
    ------Bestellung2
    ----kunde2
    ------Bestellung1
    ------Bestellung2

    Und dann wird für jede Bestellung nochmal die Informationen nachgefragt:

    - root
    ----kunde1
    ------Bestellung1
    ----------Infos
    ------Bestellung2
    ----------Infos
    ----kunde2
    ------Bestellung1
    ----------Infos
    ------Bestellung2
    ----------Infos

    Jetzt habe ich das ganze ja bisher so gemacht und es hat auch wunderbar geklappt, nur als ich mal versucht habe größere Mengen an Daten zu verwalten, ging die Ladezeit der TreeView extrem in die Höhe.

    Ich denke mal es liegt daran, dass ich alles einzeln Abfrage.
    gibt es eine Möglichkeit das ganze effizienter zu gestalten?
    Hat vielleicht jemand eine Idee?

    Ich arbeite mit:
    C#
    Visual Studio 2005

  • #2
    On demand oder Cache

    Hi,
    wenn du nach und nach die Daten aus der DB holst, meinst du damit, du holst sie on demand nur für den Teilbaum der vom User gerade geöffnet wird oder erzeugst du den gesamten Baum initial?

    Bei sehr großen Datenmengen ist das on demand Laden meines Erachtens die einzig sinnvolle Lösung. Beim erstmaligen! Öffnen des Teilbaumes werden die Unterknoten aus der DB ermittelt und eingefügt. Somit werden immer nur die Daten gelesen, die auch benötigt werden.
    Bei moderat vielen (wieviel immer das auch ist) Daten kannst du mal probieren, die Anzahl der DB Zugriffe dadurch zu minimieren, indem du die gesamte DB-Tabelle zunächst in einen Cache (z.B. DataTable) am Stück einliest und dann in diesem Fall per Row Filter o.ä. die entsprechenden Daten ermittelst. Somit hast du nur einen "teuren" DB Zugriff und sonst nur Zugriffe im RAM. Nun ist der Rowfilter auch nicht gerade super schnell, sollte aber schneller als ein DB Zugriff sein.

    Hoffe das hilft dir weiter
    Gruß

    Comment


    • #3
      Hallo,
      ich schlage mich gerade mit dem gleichen Problem herum. Unsere DB braucht beim ersten Laden so lange, dass ich immer nur den parent- bzw. den ersten child-Ast laden will.

      Gibt's für dieses Vorgehen einen Workshop für die Vorgehensweise?

      Gruß
      Ingo

      Comment

      Working...
      X