TreeView et ADO.Net

Version imprimable



Je dois mettre une autre boucle ? il faut que ça soit automatiser

PS : Etage 1 est enfant de Bâtiment A
  • 06/06/2011, 14h35
    AcidLines
    Et bien c'est le principe d'un Treeview l'affichage en noeud.

    tu aura toujours une structure de ce type :
    • Noeud 01
      • Enfant 01 de Noeud 01
      • Enfant 02 de Noeud 01
        • Enfant 01 de Enfant 02
        • etc...
      • etc...
    • Etc..
  • 06/06/2011, 14h48
    spamitovic
    Le problème c que je peux avoir une structure trèèèèès longue... dans ce cas je ne peux pas déterminer le nombre de boucle... chaque utilisateur enregistre sa propre structure...

    Je trouve que le fait de mettre trop de boucle n'est très performant :(
  • 06/06/2011, 14h50
    AcidLines
    Tu as des noeud enfants rattachés à Etage ?
  • 06/06/2011, 14h58
    spamitovic
    Oui je peux les avoir... tout dépend de la structure de l'entreprise qui utilises le programme... dans étage 1 ils peuvent classé les choses par département... chaque étage peut avoir un ou plusieurs départements
  • 06/06/2011, 15h04
    AcidLines
    Dans ce cas, il faut que tu puisse en premier lieu definir le nombre de noeud enfant qu'il pourrai y avoir (par requête) à partir de là je pense que tu as moyen de réfléchir à un algo qui te permette de dire si il d'agit d'un nouvel enfant etc..
  • 06/06/2011, 15h07
    spamitovic
    Exactement, il faut définir ce nombre sinon on va jamais finir :) merci pour ton aide et tes conseils :ccool:
  • 06/06/2011, 15h09
    AcidLines
    De rien, bon courage pour ta prog
  • 06/06/2011, 15h12
    spamitovic
    Merci :D
  • 13/06/2011, 00h37
    spamitovic
    Malheureusement je dois ré-ouvrir cette discussion car mon problème avec les images n'a pas été résolu :

    Code:

    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
    Comm = New SQLiteCommand("SELECT DISTINCT SiteImg FROM Sites;", Conn)
    R = Comm.ExecuteReader
    While R.Read
        Dim imgName As String = R.GetString(0)
        il1.Images.Add(imgName, imgLoad("data\icones\" & imgName))
    End While
    R.Close()
    Comm = Conn.CreateCommand
    Comm = New SQLiteCommand("SELECT IdSite, SiteName, SiteImg, SiteParent FROM Sites WHERE SiteParent = 0 ORDER BY SiteNode;", Conn)
    R = Comm.ExecuteReader
    While R.Read
        ref2 = R.GetInt32(0)
        tv.SelectedImageKey = R.GetString(2)
        tv.ImageKey = R.GetString(2)
        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 = ref2
            Dim noeudIndex As Integer = tv.Nodes.IndexOfKey(clecourante)
            tv.Nodes(noeudIndex).SelectedImageKey = R2.GetString(2)
            tv.Nodes(noeudIndex).ImageKey = R2.GetString(2)
            tv.Nodes(noeudIndex).Nodes.Add(clecourante, R2.GetString(1))
         End While
         R2.Close()
    End While
    R.Close()
    Conn.Close()

    Mon programme n'affecte pas chaque image à son propre enregistrement, il prends toujours la dernière image chargée dans le ImageList :(

    Avez-vous une solution à ce problème ?