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 :

Treeview : recherche et expand


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 49
    Par défaut Treeview : recherche et expand
    Bonjour,

    J'ai un treeview qui représente une nomenclature
    Je souhaite pouvoir effectuer une recherche sur tous les Nodes pour savoir a quel niveau se trouve un composant.
    A chaque fois que je trouve le composant dans un noeud, je veux faire un expand de son parent.
    Lorsque l'utilisateur clique sur Recherche:
    1- je fais un collapseall du treview
    2- j'effectue la recherche qui m'expand les noeuds contenant mon composants

    Résultat : Le 1 fonctionne , mais pas le 2

    Quelqu'un a t il une idée du problème?

    Merci

    //************************
    Les fonctions utilisées pour la recherche et l'expand

    private voidFindTextRecursive(TreeNode ATreeNode, string AText)
    {
    foreach (TreeNode tn in ATreeNode.ChildNodes)
    {
    if (tn.Text.Equals(AText, StringComparison.OrdinalIgnoreCase) == true)
    {
    tn.Parent.ExpandAll();
    tn.Text = tn.Text;
    Response.Write("find " + tn.ValuePath.ToString() + " <hr>");
    }
    FindTextRecursive(tn, AText);
    }
    }

    public void FindTextInNode( TreeView ATreeView, string Texte)
    {
    TreeNodeCollection nodes = ATreeView.Nodes;
    //---------------
    foreach (TreeNode n in nodes)
    {
    FindTextRecursive(n, Texte)
    }
    }

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Comme cela ça devrait marcher :

    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
     
    private void FindTextRecursive(TreeNode ATreeNode, string AText)
    {
        foreach (TreeNode tn in ATreeNode.ChildNodes)
        {
            if (tn.Text.ToLower() == AText.ToLower())
            {
                Expand(tn);
                tn.Text = tn.Text;
                Response.Write("find " + tn.ValuePath.ToString() + " <hr>");
            }
            FindTextRecursive(tn, AText);
        }
    }
     
    private static void Expand(TreeNode tn)
    {
        tn.Parent.Expand();
        if (tn.Parent.Parent != null)
            Expand(tn.Parent);
    }
     
    public void FindTextInNode( TreeView ATreeView, string Texte)
    {
        TreeNodeCollection nodes = ATreeView.Nodes;
     
        foreach (TreeNode n in nodes)
        {
            FindTextRecursive(n, Texte);
        }
    }
    J'ai rajouté une méthode recursive pour expand tous les nodes parent du node trouvé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 49
    Par défaut Yeeeeeeeeeeesss
    Merci beaucoup, ça fonctionne maintenant.

    Donc, si je résume la situation :

    Si je prends un Treeview
    -n1
    --n11
    ---n111
    -n2
    -n3

    si je veux faire un expand du nœud n111,
    il ne suffit pas de faire un expand du parent (ici n11),
    mais il faut faire un expand de toute la branche parent jusqu'au nœud root(n1).
    Si ce n'est pas fait, le treeview reste en collapse

    C'est bien ça?

  4. #4
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Exact

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

Discussions similaires

  1. TREEVIEW, rechercher et sélectionner
    Par p1k1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/11/2008, 21h01
  2. TreeView : recherche efficace
    Par Jérem22 dans le forum C#
    Réponses: 6
    Dernier message: 25/02/2007, 18h36
  3. recherche composant Treeview...
    Par Blue LC dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/11/2005, 18h18
  4. [C# Treeview] sauvegarde treenode problème Expand()
    Par joujoukinder dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/07/2005, 13h10
  5. [VB.NET] [TreeView] expand node d'un treeview
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/04/2005, 16h21

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