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 :

Problème SelectedNode Control Treeview


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut Problème SelectedNode Control Treeview
    Bonjour

    J'ai un problème avec un Treeview implanté dans une page web (4 niveaux avec la racine): impossible de gérer les noeuds sélectionnés, d'autre part, il a un comportement que je ne comprends pas : il accepte la sélection des noeuds de niveaux 3, mais sur les noeuds niveau 1 et 2, il sélectionne uniquement le premier noeud du niveau (?!!).
    Mon Treeview est implanté avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            <asp:TreeView ID="activ" runat="server" Style="z-index: 100; left: 0px; position: absolute;
                top: -6px" ExpandDepth="1" OnSelectedNodeChanged="activ_SelectedNodeChanged" ImageSet="Arrows" MaxDataBindDepth="2">
                <LevelStyles>
                    <asp:TreeNodeStyle Font-Size="Large" Font-Underline="False" />
                </LevelStyles>
                <SelectedNodeStyle Font-Bold="True" ForeColor="#5555DD" Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" />
                <ParentNodeStyle Font-Bold="False" />
                <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px"
                    NodeSpacing="0px" VerticalPadding="0px" />
            </asp:TreeView>
    Il est initialisé sur l'évènement Page_Load de la page (j'ai lu dans un post que c'était la meilleure solution) :
    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
        protected void Page_Load(object sender, EventArgs e)
     
        {
            if (!IsPostBack)
            {
                TreeNode noeudRacine = new TreeNode("Activités", "0");
                activ.Nodes.Add(noeudRacine);
                //noeudRacine.NavigateUrl = "javascript:void(0);";
     
                OleDbConnection cnx = new OleDbConnection();
                cnx.ConnectionString = ads_filiere.ConnectionString;
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = cnx;
                cnx.Open();
                cmd.CommandText = "select filiere from filiere";
                OleDbDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    TreeNode noeudFiliere = new TreeNode(dr.GetString(dr.GetOrdinal("filiere")), "1");
                    noeudRacine.ChildNodes.Add(noeudFiliere);
                    //message += noeudFiliere.NavigateUrl.ToString() + "<br>";
                    //noeudFiliere.NavigateUrl = "javascript:void(0);"
                    OleDbConnection cnx2 = new OleDbConnection();
                    cnx2.ConnectionString = ads_filiere.ConnectionString;
                    OleDbCommand cmd2 = new OleDbCommand();
                    cmd2.Connection = cnx2;
                    cnx2.Open();
                    cmd2.CommandText = "select branche from branche where filiere='" + dr.GetString(dr.GetOrdinal("filiere")) + "'";
                    OleDbDataReader dr2 = cmd2.ExecuteReader();
                    while (dr2.Read())
                    {
                        if (!dr2.IsDBNull(0) && dr2.GetString(0).Trim() != "")
                        {
                            TreeNode noeudBranche = new TreeNode(dr2.GetString(0), "2");
                            noeudFiliere.ChildNodes.Add(noeudBranche);
                            //message += noeudBranche.NavigateUrl.ToString() + "<br>";
                            //noeudBranche.NavigateUrl = "javascript:void(0);";
                            OleDbConnection cnx3 = new OleDbConnection();
                            cnx3.ConnectionString = ads_filiere.ConnectionString;
                            OleDbCommand cmd3 = new OleDbCommand();
                            cmd3.Connection = cnx3;
                            cnx3.Open();
                            cmd3.CommandText = "select spécialité from spécialité where branche='" + dr2.GetString(0) + "'";
                            OleDbDataReader dr3 = cmd3.ExecuteReader();
                            while (dr3.Read())
                            {
                                if (!dr3.IsDBNull(0) && dr3.GetString(0).Trim() != "")
                                {
                                    TreeNode noeudSpécialité = new TreeNode(dr3.GetString(0), "3");
     
                                    //noeudSpécialité.NavigateUrl = "javascript:void(0);";
                                    noeudBranche.ChildNodes.Add(noeudSpécialité);
                                }
                            }
                            dr3.Close();
                            cnx3.Close();
                        }
                    }
                    dr2.Close();
                    cnx2.Close();
                }
                dr.Close();
                cnx.Close();
     
            }
        }
    Enfin, j'ai codé la procédure SelectedNodeChanged comme suit (juste le remplissage de zones de texte avec les données du noeud sélectionné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        protected void activ_SelectedNodeChanged(object sender, EventArgs e)
        {
            Response.Write(activ.SelectedNode.Text);
            txtselectedvalue.Text = activ.SelectedNode.Text;
            txtselectedvalue2.Text = activ.SelectedNode.Text;
            txtpath.Text = activ.SelectedNode.ValuePath;
            txtniveau.Text = activ.SelectedNode.Depth.ToString();
     
        }
    Question : Pourquoi le treeview ne fonctionne qu'avec les noeuds de niveau 3 ? et pas avec tous ? Je n'ai pas trouvé de propriété qui paramètre celà, je n'ai pas trouvé de réponse dans le forum non plus, c'est pour çà que je demande si quelqu'un ne verrait pas une solution à mon problème ?
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    J'ai trouvé mon problème : à la création des noeuds, je mettais pour la propriété "value", le niveau de l'arbre du noeud sélectionné, or le Treeview a l'air d'utiliser cette valeur pour définir le "Path" du noeud, j'ai donc remplacé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TreeNode noeudBranche = new TreeNode(dr2.GetString(0), "2");
    Par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TreeNode noeudBranche = new TreeNode(dr2.GetString(0), dr2.GetString(0));
    Et mon problème st résolu. En fait j'utilise la proprriété Treenode.Depth pour déterminer le niveau sur lequel je me trouve.

    Si ce post peut quand même servir à quelqu'un, tant mieux !!

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

Discussions similaires

  1. Problème avec un treeview
    Par adicor dans le forum MFC
    Réponses: 8
    Dernier message: 01/12/2006, 22h59
  2. [VBA-Excel]Problème de création Treeview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2006, 15h44
  3. Télécharger le Controle Treeview
    Par Jeannot45 dans le forum Access
    Réponses: 4
    Dernier message: 12/07/2006, 14h59
  4. Problème avec control parent de type TDrawGrid
    Par slylafone dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/11/2005, 17h32
  5. Problème avec Virtual Treeview
    Par bisounoursbleu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/12/2004, 15h37

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