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 :

Créer évènement sur le noeud d'un TreeView


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut Créer évènement sur le noeud d'un TreeView
    Bonjour,

    Je souhaiterais savoir s'il était possible d'attribuer un évènement sur un noeud dans un treeview. Par exemple, lorsque je clic sur un noeud racine, je voudrais qu'une méthode se déclenche pour remplir ce noeud racine. J'ai pu trouver quelques éléments de réponse mais incomplète. Si quelqu'un s'est déjà retrouvé dans mon cas, ça serai gentil de me donner un petit coup de main .

    Merci pour votre réponse

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Le but de la manoeuvre est-il de faire du "load on demand" (c'est à dire de ne charger les enfants d'un noeud qu'au clic sur un noeud parent.) ?
    Ou le but est-il autre ?

  3. #3
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Pour ca, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    treview.PopulateOnDemand = true;
    puis attribuer la callback de population.

    Un exemple d'utilisation sur la msdn :
    http://msdn.microsoft.com/en-us/libr...eondemand.aspx

  4. #4
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Le but est bien de ne charger les enfants d'un noeud qu'au clic sur un noeud parent. Dans un premier temps j'ai mes noeuds racines et lorsque je clic sur l'un d'entre eux, une méthode doit se déclencher avec une requête Sql pour sélectionner les infos propres à ce noeud racine. L'intérêt pour moi serai de déclencher une requête Sql que lorsque je sélectionne un noeud.

  5. #5
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Merci pour votre aide hwoarang. J'essai d'adapter mon code par rapport au lien que vous me proposez et je vous tiens au courant.

  6. #6
    Membre confirmé
    Profil pro
    Développeur en alternance
    Inscrit en
    Février 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 107
    Par défaut
    Rebonjour,

    J'arrête pas de me casser la tête pour trouver une solution mais le problème persiste toujours !

    je créer un évènement TreeNodePopulate sur mon treeview le problème c'est que quand je clic sur un noeud, l'évènement ne se déclenche pas automatiquement et je ne vois pas où je devrais le déclarer. Voici mon évènement pour générer mes noeuds racines :
    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
     
        protected void Button_tre_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = @"Data Source=B0168;Initial Catalog=annuaire;Integrated Security=True";
     
            //On creer notre requete sql pour les poles
            DataSet mondataPole = new DataSet();
            SqlDataAdapter sqaPole = new SqlDataAdapter();
            sqaPole.SelectCommand = new SqlCommand("SELECT ID, LIBELLEFR FROM POLES ", cn);
            sqaPole.Fill(mondataPole, "POLES");
     
            foreach (DataTable dtPole in mondataPole.Tables)
            {
     
     
                //parcours total de mes poles
                foreach (DataRow lPole in dtPole.Rows)
                {
     
                    TreeView1.Nodes.Add(new TreeNode(lPole["LIBELLEFR"].ToString()));
                }
     
     
            }
     
        }
    mon évènement pour attribuer des noeuds enfants à un noeud racine :

    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
     
        protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
     
            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = @"Data Source=B0168;Initial Catalog=annuaire;Integrated Security=True";
     
            DataSet mondataDep = new DataSet();
            SqlDataAdapter sqaDep = new SqlDataAdapter();
            sqaDep.SelectCommand = new SqlCommand("SELECT D.ID, D.NOMSERVFR FROM DEP D, POLES P WHERE P.ID= D.IDPOLE AND D.IDPOLE ="+e.Nodes, cn);
            sqaDep.Fill(mondataDep, "DEP");
     
            foreach (DataTable dtDep in mondataDep.Tables)
            {
     
                //parcours total de mes deps
                foreach (DataRow lDep in dtDep.Rows)
                {
     
                    e.Node.ChildNodes.Add(new TreeNode( lDep["NOMSERVFR"].ToString()));
     
                }
     
            }
        }
    Je rappelle que mon objectif ici et de générer tout mes noeuds racines et que lorsque je clic sur un des noeuds, une seule requête Sql doit s'exécuter seulement pour ce noeuds afin de lui attribuer ses noeuds enfant
    Merci pour votre attention

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Pour chaque noeud qui doit etre peuplé à la demande, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node.PopulateOnDemand = true;
    Ainsi, il est possible de peupler certains noeuds à la demande et d'autres pas.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/05/2010, 19h49
  2. cliquer par la droite sur les noeud d'un treeview
    Par TaymouWan dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/05/2009, 10h29
  3. Désactiver clique sur un noeud d'un treeview
    Par me_yassine dans le forum ASP.NET
    Réponses: 0
    Dernier message: 07/11/2008, 10h04
  4. Réponses: 2
    Dernier message: 19/02/2006, 12h46

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