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

ASP.NET Discussion :

Utilisation d'un treeView


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Utilisation d'un treeView
    bonjour,
    je débute en asp.net et j'utilise un Treeview pour afficher le contenu d'une base de donnée SQL

    Mon affichage est sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     PARENT1
                Enfant11
                Enfant12
                Enfant13
     PARENT2
                Enfant21
                Enfant22
                Enfant23
     PARENT3
                Enfant31
                Enfant32
                Enfant33
    je recherche une solution pour a partir de cette affichage ajouter un enfant14 par exemple dans ma base de donnée et aussi pouvoir modifier enfant11 en enfant101 par exemple
    pour simplifier je dois pouvoir suprimer , modifier , inserer des données
    Yann

  2. #2
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Désolé, mais je n'ai pas de réponse à ta question.

    Par contre, je suis trés interressé de savoir comment tu fais pour utiliser un TreeView avec une base de données. Si tu regardes les autres topic récent (ce que tu as certainement fait) tu verras que j'ai un souci pour précisément ce que tu fais.

    Donc, si tu me file le code et la structure de BDD que tu utilise, je pourrais certainement t'aider, puisque j'ai la même problématique que toi et que je dois faire du code pour y arriver. Comme ça, je te refilerais mon code pour faire la gestion des entrées.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    Yann_br : peux tu détailler ta base de données? Ca pourra nous aider à répondre.

    Sinon, en réalité je ne vois pas très bien ou se situe le souci.
    Pour insérer ou supprimer des éléments du treeview, ça revient à insérer ou supprimer de simples lignes dans ta base de données


    zooffy : perso, moi pour remplir mon treeview depuis ma base de données.
    j'ai une table "object" qui contient tous les éléments du treeview tous niveaux confondus et une table "relation" qui comprend 2 champs : "object_id" et "object_parent_id".

    Ma procédure stockée me renvoie autant de tables qu'il a y a de niveaux à mon arbre. avec chaque fois l'id de l'object, son nom et l'id de son parent.

    Une fois dans le code, j'ai autant de boucle for qu'il n'y a de tables dans mon dataset. Et je remplis mon arbre comme ça en basant sur les id enfants et parents. C'est pas très compliqué.

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pcdj pour tes éclaircissements. Je te rejoins complètement dans ton explication pour Yann_br.

    Par contre, pour ton explication pour moi, certes ça a l'air simple, mais quand on ne maitrise pas du tout la manipulation des TreeView, c'est un peu complexe.
    Aurais tu la gentillesse de me filer un bout de code VB et SQL ?
    En plus de ne pas maitriser les TreeView, j'ai aussi des soucis avec les DataSet multiTable.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonsoir,
    Dans ma base de données j'ai 2 tables

    PARENTS avec 5 champs différents et je souhaite pouvoir les editer /modifier supprimer

    ENFANTS avec 5 champs différents que je souhaite ajouter /editer modifier /supprimer

    Je souhaite avoir une seul page pour gerer completement les infos contenu dans ma base de données

    j'étais partit sur l'option Treeview pour gerer l'affichage , a l'ouveture du la page les informations dans la table enfants ne sont pas visible.

    Yann

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, je pense que tu peux arrive rà gérer ça avec des DetailView.

    Toutefois, un morceau de code pour nourrir ton TreeView nous serait bien utile, ainsi que les requêtes que tu fait.
    Egalement une explication des champs de tes deux tables, parce que là, j'avoue que je n'arrive pas à bien suivre.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    Tu n'as que 2 niveaux dans ton treeview ?

    Pour supprimer : il te suffit de récupérer l'id du "selectednode".
    pour modifier c'est la même chose, une fois que tu connais l'id du noeud sélectionné, tu peux faire ce que tu veux.

    Pour insérer des noeuds, il te faut savoir si c'est un élément parent ou enfant que tu veux insérer.

    Pour un parent, ce doit être qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim monNoeud as new treenode
    monArbre.nodes.add(monNoeud)
    Pour insérer un élément enfant, c'est plus ou moins la même chose sauf que tu dois savoir à quel noeud parent l'ajouter.

    je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim monNoeud as new treenode
    monArbre.selectedNode.ChildNodes.add(monNoeud)
    Une fois que le noeud est dans l'arbre, il ne reste qu'à faire un "insert" dans la bonne table.


    A zooffy pour l'exemple de code : pour la requête SQL, voir en pièce jointe.
    mais c'est un peu plus compliqué que ce que j'ai pu expliquer plus haut car dans mon cas, en plus de récupérer les noeuds depuis ma base de données, je récupère aussi depuis 2 autres tables la structure de mon arbre.
    Car dans mon cas, j'ai des arbres différents selon les cas et des noeuds peuvent se retrouver dans plusieurs arbres avec des parents et des enfants différents... C'est peut être pas très clair

    pour le code VB.net qui se charge de remplir l'arbre le voici :
    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
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    Public Sub buildTree(ByRef tree As System.Web.UI.WebControls.TreeView, ByVal HierarchyModel As String)
            da = New DataHandler
            Dim dsHierarchy As DataSet = da.getHierarchy(HierarchyModel)
            Dim l1_drow As DataRow = dsHierarchy.Tables(0).Rows(0)
            Dim l1_newNode As New OBJ.Node.CoordinationNode
     
     
            fillNodeInfo(l1_newNode, l1_drow)
            l1_newNode.SelectAction = Web.UI.WebControls.TreeNodeSelectAction.Select
     
            l1_newNode.Collapse()
     
            tree.Nodes.Add(l1_newNode)
     
            For Each l2_drow As DataRow In dsHierarchy.Tables(1).Rows
                Dim l2_newNode As New OBJ.Node.CoordinationNode
                l2_newNode.Collapse()
     
                If l2_drow.Item("PARENT_KEYNODE") = l1_drow.Item("KEYNODE") Then
     
                    fillNodeInfo(l2_newNode, l2_drow)
                    l2_newNode.SelectAction = Web.UI.WebControls.TreeNodeSelectAction.Select
                    l1_newNode.ChildNodes.Add(l2_newNode)
                End If
     
                For Each l3_drow As DataRow In dsHierarchy.Tables(2).Rows
                    Dim l3_newNode As New OBJ.Node.CoordinationNode
                    l3_newNode.Collapse()
     
                    If l3_drow.Item("PARENT_KEYNODE") = l2_drow.Item("KEYNODE") Then
                        fillNodeInfo(l3_newNode, l3_drow)
                        l2_newNode.ChildNodes.Add(l3_newNode)
                    End If
     
                    For Each l4_drow As DataRow In dsHierarchy.Tables(3).Rows
                        Dim l4_newNode As New OBJ.Node.CoordinationNode
                        l4_newNode.Collapse()
     
                        If l4_drow.Item("PARENT_KEYNODE") = l3_drow.Item("KEYNODE") Then
                            fillNodeInfo(l4_newNode, l4_drow)
                            l3_newNode.ChildNodes.Add(l4_newNode)
                        End If
     
                        For Each l5_drow As DataRow In dsHierarchy.Tables(4).Rows
                            Dim l5_newNode As New OBJ.Node.CoordinationNode
                            l5_newNode.Collapse()
     
                            If l5_drow.Item("PARENT_KEYNODE") = l4_drow.Item("KEYNODE") Then
                                fillNodeInfo(l5_newNode, l5_drow)
                                l4_newNode.ChildNodes.Add(l5_newNode)
                            End If
     
                            For Each l6_drow As DataRow In dsHierarchy.Tables(5).Rows
                                Dim l6_newNode As New OBJ.Node.CoordinationNode
                                l6_newNode.Collapse()
     
                                If l6_drow.Item("PARENT_KEYNODE") = l5_drow.Item("KEYNODE") Then
                                    fillNodeInfo(l6_newNode, l6_drow)
                                    l5_newNode.ChildNodes.Add(l6_newNode)
                                End If
     
     
                                For Each l7_drow As DataRow In dsHierarchy.Tables(6).Rows
                                    Dim l7_newNode As New OBJ.Node.CoordinationNode
                                    l7_newNode.Collapse()
     
                                    If l7_drow.Item("PARENT_KEYNODE") = l6_drow.Item("KEYNODE") Then
                                        fillNodeInfo(l7_newNode, l7_drow)
                                        l6_newNode.ChildNodes.Add(l7_newNode)
                                    End If
     
     
                                    For Each l8_drow As DataRow In dsHierarchy.Tables(7).Rows
                                        Dim l8_newNode As New OBJ.Node.CoordinationNode
                                        l8_newNode.Collapse()
     
                                        If l8_drow.Item("PARENT_KEYNODE") = l7_drow.Item("KEYNODE") Then
                                            fillNodeInfo(l8_newNode, l8_drow)
                                            l7_newNode.ChildNodes.Add(l8_newNode)
                                        End If
                                    Next
                                Next
                            Next
                        Next
                    Next
                Next
            Next
     
            tree.DataBind()
     
        End Sub
    Une dernière chose, comme tu peux le voir, pour les besoins de mon application , j'ai créé mon propre objet noeud (coordinationNode) qui hérite du treenode normal.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pcdj pour ton code.
    Je vais étudier de prés ta requête car j'ai des souci avec la mienne et je vais peut être trouver un point d'optimisation.

    Par contre pour le remplisage, c'est bon, j'ai fini par trouver un truc qui marche bien (moyennant une requête suffisament rapide).
    Je vais publier mon boulot sur les "contributions", vu que c'est trés light, ça pourra être étendu et opitmiser ans tous les sens mais ça permet surtout d'avoir une base de départ pour mettre en oeuvre un TreeView avec une base de donne et pas un fichier XML.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Bon, je pense que tu peux arrive rà gérer ça avec des DetailView.

    Toutefois, un morceau de code pour nourrir ton TreeView nous serait bien utile, ainsi que les requêtes que tu fait.
    Egalement une explication des champs de tes deux tables, parce que là, j'avoue que je n'arrive pas à bien suivre.

    Pour l'instant je n'ai presque pas de code je fais des recherche avant de commencé a codé

    Ma base sert a un intranet pour suivre les problèmes en cours dans mon services

    mes 2 Tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Parent:  Objet
                Produit -combo a partir d'une autre table
                impact -combo a partir d'une autre table
                Pourcentage avencement
                Date début
                Date Fin théorique
                Date Fin réel
     
    Enfant : Action
               Acteur
              Impact 
              Pourcentage réalisation
               Détail action
    Dans la table enfant je rajoute une ligne par action réalisé et pour la table parents c'est en fonction des nouveaux problèmes

    Yann

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Avec ce que j'ai posté dans les contributions, je pense que tu devrais y arriver assez facilement.
    Faudra que tu adapte le truc en faisant deux requêtes, une sur chaque table pour nourrir soit le premier niveau, soit le second. Si je capte bien, tu n'a pas d'autre niveau.

    Ensuite, pour travailler tes tables, ben DetailView me parais être la meilleure option. Il faut que tu gardes à l'esprit le lien entre ton incident et l'action de ton incident et tu envoi les paramettres dans ton DetailView en fonction de ce que tu veux modifier.

    En gros, je pense que tout ça peux se trouver dans une même apge, tu peux jouer sur des Panel ou jouer avec une asp:Table et tu joue avec les Visible des asp:Cell. Je joues pas mal avec ça et ça donne d'assez bon résulat.

    Dernier point, profite bien d'être sur un Intranet, les problèmes de perf sont moitié gommés, donc tu peux abuser du PostBack pour gérer tes insertions et affichages.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    merci beaucoup , je fais faire des tests
    Yann

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2010, 15h47
  2. [AC-2003] Utilisation d'un treeview TreeCtrl
    Par lio33 dans le forum IHM
    Réponses: 2
    Dernier message: 10/02/2010, 09h51
  3. Réponses: 4
    Dernier message: 01/08/2009, 17h44
  4. Utilisation d'un treeview
    Par t0ine dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/02/2006, 09h11
  5. Transformation XML-->XML en utilisant les treeview
    Par mmed dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/07/2005, 17h36

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