-
Eviter Accès BD
Bonjour,
J'ai fait un WebUserControl TreeView que je charge à partir de la base de données pour dessiner les nodes.
Ce TreeView se dessine sur le page_load du controle.
Ce controle, je l'ai ajouté à ma master page.
Seulement, quand je réalise un postback, je repasse a chaque fois dans le page_load du control et donc redessine le menu à partir de la base de données (ce qui est normal)
Sur un postback, je souhaiterais qu'il ne me redessine pas le treeview mais garde celui deja dessiné, comment est ce que c'est réalisable ?
Merci pour vos réponses
-
Code:
If (!IsPostBack) {...}
-
Une précision:
Je rajouter le treeview en code aussi.
Car si je l'ajoutais pas en code, je n'aurais quand faire un test sur postback, mais la vu que je le rajoute en code ...
-
Citation:
Envoyé par lutecefalco
Code:
If (!IsPostBack) {...}
Mince, j'ai apporté ma précision un poil trop tard ... :oops:
Merci pour ta réponse, aurais tu une réponse par rapport à ma précision ?
-
Pourquoi tu l'ajoutes via le code?
-
Peut être pour avoir plus de flexibilité, ensuite peut être que ce n'est pas nécessaire, je ne sais pas vraiment.
En revanche dans le même principe, j'ai une liste déroulante, et je veux afficher des données dans une autre liste déroulante à partir de l'item sélectionné (tout ca s'effectue à partir de la base de données).
A la sélection de l'item, je crée une autre liste déroulante en code, et je l'ajoute.
Ensuite je dois cliquer sur un bouton pour faire une action (donc postback), je perds (normal) le deuxieme control alors que je voudrais le garder ...
Peut être qu'avec cet exemple c'est mieux
-
je ne suis pas tres bon en treenode et tout le tintouin mais si tu le declare en viewstate=true, cela ne permettrait il pas de ne pas de repasser dans le code a chaque fois?
-
Bonjour à tous! (1er message sur le forum)
Je suis débutant en ASP.NET et suis confronté au même problème que "Promesses". Le problème n'étant apparemment pas résolu, je fais appel à vos contributions.
Merci.
-
Il faut en effet passer par le ViewState afin de conserver les informations lors d'un postback.
Faites donc tous deux une recherche dessus, vous trouverez sans nul doute votre bonheur ;)
-
Il faut également être très prudent avec le cycle de vie d'une page Asp.net et des contrôles ajoutés dynamiquement.
Si on veut qu'il profitent du viewstate, il vaut mieux ajouter ces contrôle lors du OnInit de la page et pas dans le Load... Car dans le Load, le viewstate est déjà chargé et donc les contrôles qui sont ajoutés dans le load ne récupérerons pas leurs valeurs automatiquement.
-
Je l'avais en effet oublié : source d'erreur longue à retrouver ...
-
Désolé d'insister... :D
Mais mon problème est que je construit un menu dynamiquement pouvant contenir un nombre indéterminé de TreeViews (résultats de requêtes sur base mysql), que je construit "à la main" et que j'affiche dans un ajax accordion.
Je souhaiterais donc que la construction de mon menu ne s'effectue qu'une fois au début de la session.
Je vois pas bien comment l'utilisation du viewstate peut solutionner mon problème dans ce cas (en tout cas, mes tests ont échoué)
-
Si les contrôles sont composés dynamiquement, la seule chose pour laquelle le viewstate peut t'aider, c'est à stocker l'information qui te sert à générer le menu.. Ce qui te permet d'éviter l'accès BD ou autre... en aucun cas cela ne te dispensera de recréer les contrôles...
Cela tient du cycle de vie d'une page asp.net
-
Ok, c'est bien ce que je craignais.
Merci pour vos réponses.
-