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

VB.NET Discussion :

TreeView et ADO.Net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut TreeView et ADO.Net
    Bonjour,

    J'aimerai remplir mon TreeView à partir des données situant dans ma base de données... pour l'instant j'arrive juste à remplir mon TreeView avec les enregistrements parents (Site 1..Site 2) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Comm = Conn.CreateCommand
    Comm.CommandText = "SELECT IdSite, SiteName, SiteImg, SiteParent FROM Sites ORDER BY SiteNode;"
    R = Comm.ExecuteReader
    While R.Read
        Dim Rc As New TreeNode
        Rc.ImageKey = R.GetString(2)
        Rc.SelectedImageKey = R.GetString(2)
        Rc.Text = R.GetString(1)
        tv.Nodes.Add(Rc)
    End While
    R.Close()
    Sincèrement, je ne sais pas comment pouvoir afficher les enregistrements appartenant à chaque site afin de passer de ça :

    Site 1
    Site 2

    à ça :

    Site 1
    Bâtiment A
    Bâtiment B
    Site 2
    Bâtiment A

    Merci de m'aider

  2. #2
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Bonjour.

    Il te faut deux boucles pour faire ce que tu veux faire.

    La première, tu créé ton noeud parent. Tu initialise ton noeud parent avec en paramètres l'id du noeud et le libellé à donné.

    Ensuite pour chaque enregistrement enfant, tu ajoute un noeud enfant au noeud parent en cours : TonTv.nodes(idnoeudcourrant).nodes.add(idenfant, libelledetonnoeud).

    Exemple via un bout d'un de mes codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    dreader_type = getArbreTypeOrientGenPec(pecSelect)
    While (dreader_type.Read)
    'La clé du noeud parent est l'id de mon enregistrement
    Dim clecourranttype As Integer = dreader_type.Item(0).ToString
    tv_orientglobalPec.Nodes.Add(clecourranttype, dreader_type.Item(1).ToString)
    '--
    dreader_choix = getArbreChoixOrientGenPec(pecSelect, clecourranttype)
    'Création des noeud enfant du noeud parent en cours
    While dreader_choix.Read
    Dim clecourrantechoix = dreader_choix.Item(0).ToString
    Dim noeudIndex As Integer = tv_orientglobalPec.Nodes.IndexOfKey(clecourranttype)
    tv_orientglobalPec.Nodes(noeudIndex).Nodes.Add(clecourrantechoix, dreader_choix.Item(1).ToString)
    End While
    End While

  3. #3
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Je reçoi un bug dans cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    While R2.Read
        Dim clecourante As Integer = R2.Item(0).ToString
        Dim noeudIndex As Integer = tv.Nodes.IndexOfKey(clecourante)
        tv.Nodes(noeudIndex).Nodes.Add(clecourante, R2.Item(1).ToString)
    End While
    noeudIndex = -1 ce qui n'est pas bon...

    L'exception est la suivante :
    Specified argument was out of the range of valid values. Parameter name: index

  4. #4
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Peux tu me montrer ton code avec ta première boucle ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Oui le voici au complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Comm.CommandText = "SELECT IdSite, SiteName, SiteImg, SiteParent FROM Sites WHERE SiteParent = 0 ORDER BY SiteNode;"
    R = Comm.ExecuteReader
    While R.Read
       ref2 = R.GetInt32(0)
       tv.Nodes.Add(ref2, R.GetString(1))
       Comm2 = New SQLiteCommand("SELECT IdSite, SiteName, SiteImg, SiteParent FROM Sites WHERE SiteParent = " & ref2 & ";", Conn)
       R2 = Comm2.ExecuteReader
       While R2.Read
           Dim clecourante As Integer = R2.GetInt32(0)
           Dim noeudIndex As Integer = tv.Nodes.IndexOfKey(clecourante)
           tv.Nodes(noeudIndex).Nodes.Add(clecourante, R2.GetString(1))
       End While
    End While
    R.Close()

  6. #6
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Dans ta deuxième boucle, il faut que tu mette la clécourrante du noeud supérieur et non celle de l'enfant que tu génère.

    Tu n'initialise pas ta clécourrante de ta première boucle qui sera passer en paramètre du noeud parent dans ta deuxième boucle.

    Si tu regarde bien, j'ai 2 clés dans mon code.

Discussions similaires

  1. [VB.NET] [ADO.NET] Clef primaire auto incrémenté
    Par Guld dans le forum Accès aux données
    Réponses: 4
    Dernier message: 25/09/2004, 20h46
  2. [VB.NET] [ADO.NET] Adapter, TableMapping et DataSet xsd
    Par neo.51 dans le forum Accès aux données
    Réponses: 14
    Dernier message: 23/09/2004, 16h52
  3. [VB.NET] [ADO.NET] DataAdapter et concaténation
    Par master56 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/06/2004, 13h25
  4. Réponses: 5
    Dernier message: 22/12/2003, 14h18
  5. [IB v7.1][C#][ADO.NET] Démarrer avec IB 71
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 14
    Dernier message: 05/08/2003, 12h25

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