Announcement

Collapse
No announcement yet.

Subnodes aus TreeView auslesen

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

  • Subnodes aus TreeView auslesen

    Hallo!

    Habe das Problem schon gegoogelt, bin dort aber nicht wriklich weitergekommen (außer mit XML - ich dneke aber es gibt eine andere lösung)

    Ich habe ein Explorer-Fenster mit Datenbank-Anbindung. Zur Anzeige der rechten Seite (= ListView), benötige ich die aktuell angewählte SubNode aus der linken Seite ( = TreeView), um diesen Wert dann als Variablen zu speichern und in die Abfrage für den Listview einzubauen.

    Ich weiß aber nicht, wie ich auf die Subnodes zugreifen kann.

    Ein Befehl wie

    Code:
    Treeview.SelectedNode.CurrentSubNode.Text
    gibt es nicht.

    hat das shconmal jemand gemacht?

    Vielen Dank für Eure Hilfe!

  • #2
    Ein Node hat wiederum eine Nodes Property da stehen die Subnotes drin.

    Comment


    • #3
      Wie kann ich darauf zugreifen? Im Objektkatalog finde ich dergleichen nichts.

      Code:
      Dim test as String
      test = TreeView.SelectedNode.Nodes.ToString
      liefert mir eine ganze Collection, ich will ja aber nur die Subnode vom aktuellen Node.

      Muss man das mit einer Schleife machen?

      Comment


      • #4
        liefert mir eine ganze Collection, ich will ja aber nur die Subnode vom aktuellen Node.
        Ein Node hat keinen Subnode sondern Subnotes(man beachte den Plural in der Bezeichnung der ist nicht grundlos). Wenn du in der Hilfe nach siehst wirst du sehen das Nodes ein Collection ist also immer eine Sammlung von Nodes. Ob du eine Schleife brauchst hängt davon ab was du damit machen willst.

        Comment


        • #5
          Aha. Also sprich, wenn ich "das, was Nodes untergeordnet ist" haben will, ist das immer eine Sammlung von Subnodes (auch wenn das z. B. nur eine ist)?

          Mein Ziel ist es, den Wert der aktuellen Subnode in einer Variablen zu speichern um mit dieser dann eine Datenbankabfrage für den ListView (rechte Seite) zu machen.

          Es müsste halt sowas geben wie: SelectedNode.SelectedNode oder so ähnlich.

          Comment


          • #6
            In einem TreeView gibt es nur einen SelectedNode und denn hast du schon mit TreeView.SelectedNode ausgelesen. Was sollte da noch SelectedNode.SelectedNode darstellen?

            Wenn du denn ganzen Pfad vom SelectedNode zur Root brauchst also die ganze Kette der Nodes so ließ in einer Schleife vom SelectedNode jeweils den Parent Node aus bis Node.Parent = nothing ist und du somit die Wurzel erreicht hast.

            Comment


            • #7
              Nee ich brauche nicht die ganze Kette der Nodes, sondern sozusagen das KLEINSTE Element, also den ganz untersten Zipfel im Tree.

              Achso, mit SelectedNode kann man jede Stufe ansprechen. Jetzt hab ichs kapiert.

              Mein Tree hat Nodes und ChildNodes, die will ich ansprechen.

              Wie kann ich es verhindern, dass im ListView schon Daten angezeigt werden, obwohl ich das ChildView (was als Bezug zur ListView per DB-Abfrage wichtig ist) noch gar nicht angewählt habe? Das müsste doch über ne einfache Try-Catch-Anweisung zu machen sein oder?

              Comment


              • #8
                Ich habe keine Ahnung was du wie genau tust. Insofern kann ich nur raten. Ich würde wohl einfach solange wie TreeView.SelectedNode = nothing ist oder sobald dieser zu nothing wird eben keine Daten im ListView anzeigen. Da könnte z.B. der AfterSelect Event des TreeView helfen.

                Comment


                • #9
                  Er will vom ausgewählten Node den untersten Subnode.

                  Ich würde mal

                  TreeView.SelectedNode.Nodes.Last();

                  versuchen Das funktioniert solang die Nodes in der Reihenfolge gerendert werden in der sie angezeigt werden.

                  Comment


                  • #10
                    Warum sollte man den brauchen
                    Aber wenn das ein Treffer ist gut geraten

                    Comment


                    • #11
                      Originally posted by monik. View Post
                      Nee ich brauche nicht die ganze Kette der Nodes, sondern sozusagen das KLEINSTE Element, also den ganz untersten Zipfel im Tree...
                      Deswegen meinte ich eigentlich

                      Comment


                      • #12
                        Wunderschönen guten Morgen.

                        1. nicht ER sondern SIE ;-)

                        2. Danke erstmal, ich werde das mit ...Last() dann mal ausprobieren. Und dann berichten.

                        Comment


                        • #13
                          Edit:

                          Mein Problem hat sich gerade quasi von selbst gelöst, aber ohne den Tip mit der ParentNode wäre ich echt nicht drauf gekommen.

                          Ich habe daraus jetzt eine ganz einfache if-else-Anweisung gemacht.

                          Code:
                          Private Sub TreeView_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView.AfterSelect
                                  Dim curNode As String
                                  Dim ParentNode As TreeNode = TreeView.SelectedNode.Parent
                          
                                  If ParentNode IsNot Nothing Then
                                      curNode = TreeView.SelectedNode.Text
                                      MsgBox(curNode)
                                  Else
                          
                                  End If
                          
                          
                          
                          
                              End Sub
                          Die Variable curNode ist dann die Variable, mit der ich die Datenbankabfrage machen kann.

                          Wer hätte gedacht, dass das so einfach ist?

                          Danke für Eure Hilfe.
                          Zuletzt editiert von monik.; 07.09.2010, 11:45. Reason: Lösung gefunden

                          Comment

                          Working...
                          X