IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

Création et utilisation d'une treeView [Débutant]


Sujet :

Développement Windows

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant technique
    Inscrit en
    Août 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Août 2019
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Création et utilisation d'une treeView
    Bonjour,

    Je me tourne vers vous pour essayer de trouver une solution a mon problème qui n’est peux être pas si compliqué avec de l’expérience. J’ai écumé longuement la toile mais je trouve pas de chose exploitable dans mon cas ou je ne les comprend pas.
    Je suis en cour d’écriture d’une application en VB.net (via Visual studio 2017) de saisi de matériaux dans une base de donnée. Cette application sera diffusée à des clients qui investisse dans le soft de CFAO, dont je suis formateur, intégrateur, revendeur.
    Dans mon application je doit créer une arborescence de dossier. Ses infos sont stockées dans une base de donnée SQL sous la forme (ID unique ; ParentID ; Name ; Guid).

    - Mon problème est que je n’arrive pas a créer l’arborescence à plus de deux niveau de façon propre. Je suis incapable de dire combien de niveau maximum il peut y avoir du fait que l’ajout de nouveau dossier et sous dossier est faisable dans le soft principale.

    - Mon deuxième problème sera par la suite, quand je clic sur un des dossiers je devrais connaitre son ID dans la base SQL. Cette ID sert a associer des listes d’image ou de matériaux contenue sur une autre table. Attention je peux avoir plusieurs nom identique dans la Table SQL.
    je connais l'événement click mais je ne visualise pas de façon de récupérer mon ID unique. Sur mes bouton dans une autre partie de mon programme j'utilise le TabIndex. Est ce que l'on peut faire la même dans ce cas?

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub TreeView1_Click(sender As Object, e As EventArgs) Handles TreeView1.Click
     
        End Sub


    Je fais ma recherche SQL via une class SQLControl est celle-ci est retournée dans une variable « PUBLIC DBDT AS DATATABLE ».


    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Public Class Texture
        Public SQL As New SQLControl
     
        Private Sub Texture_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim tnode As TreeNode
            Dim i As Integer = 0
     
            'SQL.AddParam("@item", "%" & txtSearch.Text & "%")
            LoadGrid("SELECT  *  FROM texturemenutree order by [parentID],[ID] ")
            'LoadGrid("SELECT  *  FROM texturemenutree  where [parentID] = 0")
     
            If SQL.HasException(True) Then Exit Sub
     
     
            For Each r As DataRow In SQL.DBDT.Rows
     
                If r("parentid").ToString = 0 Then
     
                    tnode = TreeView1.Nodes.Add(r("name").ToString)
     
                    Dim ChildID As Integer
                    ChildID = r("ID").ToString
     
                    Dim dr() As System.Data.DataRow
                    dr = SQL.DBDT.Select("ParentID='" & ChildID & "'")
                    'Dim childlist As TreeNode
     
                    AddMoreChildren(dr, tnode.Index)
     
                Else
     
     
                End If
            Next
     
     
        End Sub
     
        Private Function LoadGrid(Query As String)
     
            SQL.ExecQuery(Query)
     
            ' ERROR HANDLING
            'If SQL.HasException(True) Then  Exit Function
     
            Return SQL.DBDT
     
        End Function
     
        Private Sub AddMoreChildren(ChildList, ParentLevel)
            'MsgBox(ParentLevel.ToString)
            Dim tnode As TreeNode
     
            For Each r As DataRow In ChildList
     
                tnode = TreeView1.Nodes(ParentLevel).Nodes.Add(r("name".ToString))
     
            Next
     
        End Sub
    End Class

    Je vous remercie d'avance de votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant technique
    Inscrit en
    Août 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Août 2019
    Messages : 22
    Points : 16
    Points
    16
    Par défaut résolution
    Bonjour,

    Après d'autre recherche j'ai fini par trouver plusieurs bout de code qui m'on permis de résoudre ma problématique.

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Public Class Texture
        Public SQL As New SQLControl
     
        Private Sub Texture_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim tnode As TreeNode
     
            LoadGrid("SELECT  *  FROM texturemenutree order by [parentID],[ID] ")
     
            If SQL.HasException(True) Then Exit Sub
     
            For Each r As DataRow In SQL.DBDT.Rows
     
                If r("parentid").ToString = 0 Then
     
                    tnode = TreeView1.Nodes.Add(r("name").ToString)
                    tnode.Tag = r("ID").ToString
                    AddMoreChildren(r("ID").ToString, tnode.Nodes)
     
                Else
                    'enfant ajouté dans la Sub récursive
     
                End If
            Next
     
        End Sub
     
        Private Sub AddMoreChildren(ByVal IDParent As Integer, ByVal Nodes As TreeNodeCollection)
     
            Dim dr() As System.Data.DataRow
            dr = SQL.DBDT.Select("parentID='" & IDParent & "'")
     
            For Each r As DataRow In dr
                Dim tnode As TreeNode = New TreeNode()
     
                tnode.Text = r("name".ToString)
                tnode.Tag = r("ID").ToString
                Nodes.Add(tnode)
     
                AddMoreChildren(r("ID").ToString, tnode.Nodes) 'lancement de la recherche des sous enfants.
     
            Next
     
        End Sub
     
     
        Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
            MsgBox(sender.selectednode.tag)
        End Sub
    End Class

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création et utilisation d'une DLL
    Par Dereck07 dans le forum Débuter
    Réponses: 3
    Dernier message: 03/05/2010, 23h39
  2. Création et utilisation d'une fonction
    Par royal38 dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 20/01/2009, 20h04
  3. création et utilisation d'une dll .net
    Par r83 dans le forum C#
    Réponses: 2
    Dernier message: 08/10/2008, 16h13
  4. Réponses: 0
    Dernier message: 03/10/2007, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo