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 :

TreeNode en variable de session


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 12
    Points
    12
    Par défaut TreeNode en variable de session
    Bonjour à tous,

    J'affiche un TreeView qui représente une arborescence de dossier. Mon TreeView n'est pas lié à une source de données, en effet, je créé dynamiquement les TreeNodes imbriqués selon un filtre sélectionné par l'utilisateur (certains dossiers sont donc ajoutés au TreeView, d'autres non).

    Ensuite, l'utilisateur clique sur un dossier pour afficher son contenu dans un GridView.

    Chaque clic sur un TreeNode provoque un postback. Le TreeView doit alors être recalculé (sinon il est à vide).

    Pour éviter de recalculer le TreeView à chaque clic, j'ai voulu mettre le TreeNode racine dans une variable de session. Mais le mode sessionstate étant à SQLServer (je ne veux pas le modifier), seuls les objets sérialisables peuvent être stockés en variable de session.

    Comment pourrais-je conserver l'état de mon TreeView entre chaque postback ?

    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Points : 220
    Points
    220
    Par défaut
    Je ne pense pas que ce soit normal que le treeview se vide au postback.
    Peux-tu nous montrer le code du remplissage ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Mon TreeView ne se vide pas au Postback.

    En faite mon Treeview est dans une webpart, l'ensemble des contrôles (dont mon TreeView) sont créés côté serveur dans la fonction CreateChildControls.

    Lorsqu'il y a un PostBack, la fonction CreateChildControls recréée l'ensemble des contrôles dont le Treeview. Je suis donc obligé de recalculer (très long car les règles sont un peu compliquées) les différents TreeNodes qui composent mon nouveau TreeView recréé.

    Ce que j'aimerais c'est pouvoir mémoriser l'état de mon TreeNode racine (par exemple), ainsi, lors du PostBack, il suffirait simplement que je recharge mon nouveau TreeView avec ce TreeNode racine.

    Cela me permettrait de faire les calculs des Treenodes qu'une seule fois et non à chaque PostBack.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Points : 220
    Points
    220
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        [Serializable()]
        public class MyNode : TreeNode
        { 
     
        }
     
         //rechargement du noeud parent
         MyNode n = (MyNode)Session["parentNode"];
         TreeView1.Nodes.Add(n);
    et ça, ça donne quoi ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Déjà merci pour tes réponses.

    J'ai essayé de créer ma propre classe héritée de TreeNode mais même comme ça il m'est impossible de mettre mon TreeNode en variable de session, j'ai toujours un message d'erreur qui me dit qu'il est impossible de sérialiser l'état de session car l'objet TreeNode n'est pas sérialisable.
    (je suis en mode sessionstate = sqlserver)

    Merci de m'aider

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    As-tu déjà pris connaissance de cet article ?

    http://www.codeproject.com/KB/dotnet..._treenode.aspx
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. [C#] Tester existence d'une variable de session
    Par IDNoires dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/12/2004, 13h30
  2. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 11h28
  3. Effacer les variables de session
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 12/12/2003, 14h42
  4. Variable de session
    Par Sadneth dans le forum ASP
    Réponses: 6
    Dernier message: 14/11/2003, 12h12
  5. variable de session
    Par divableue dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2003, 17h04

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