ViewState dans controles imbriqués [Résolu]

benjiiim94 96 Messages postés vendredi 17 décembre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 9 août 2005 à 17:59 - Dernière réponse : benjiiim94 96 Messages postés vendredi 17 décembre 2004Date d'inscription 13 juillet 2007 Dernière intervention
- 10 août 2005 à 11:29
Bonjour,



J'utilise un controle datagrid dans un controle repeater. Lors d'une
publication, les données de mon datagrid ne sont pas actualisés,
pourtant, la propriété enableviewstate est bien à true.

Est-ce que le viewstate est désactivé dans les controles imbriqués ?



Merci
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 10 août 2005 à 10:25
3
Merci
Le problème c'est que le viewstate redonne les valeurs aux controles entre le page_init et le page_load, or dans ton cas quand il va essayer de redonner les valeurs à ton datagrid il n'existera pas encore.

Le viewstate ne stocke pas les composants mais juste la valeur des propriétés de ces composants.

Si tu ne veux pas recréer le datagrid à chaque visite, tu peux faire un petit peu autrement (mais tu ne pourras plus jouer avec les evenements Edit etc du datagrid)

déjà dans ton repeater tu met des label avec la propriété enableviewstate à true et ca faut le faire au plus tard au page_init, ensuite au lieu de rajouter tes datagrid, tu récuperes le rendu sous forme de string (regarde une de mes dernieres source la dessus) puis tu met ce string sur tes label.

Est-ce plus clair comme ca ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de jesusonline
Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 10 août 2005 à 11:16
3
Merci
Le designer dans VS.net 2003 est nul ! j'essayais de jamais m'en servir car c'est une horreur ...

Sinon avec .net 2 le designer est lui utile, conrairement à l'autre ... mais bon quand on programme vraiment, on a pas vraiment besoin d'un designer pour faire nos pages.


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de jesusonline
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 9 août 2005 à 18:51
0
Merci
non, les viewstate ne sont pas desactivé dans des controles enfants, et d'ailleurs, un datagrid normale et lui meme contenu dans un controle System.Web.UI.Page

par contre si ton repeater a le viewstate de desactivé il est possible (mais il me semble que non) que ca intervient sur les controles enfants.

Tu peux nous montrer le code qu'on puisse y voir un peu plus clair.

:)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Commenter la réponse de jesusonline
benjiiim94 96 Messages postés vendredi 17 décembre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 10 août 2005 à 09:16
0
Merci
Bon bein c'est curieux alors, le repeater a bien lui aussi le viewstate d'activé.
Avant
de selectionner les parties du code correspondantes au pb , si ceci
peut t'aider a trouver une solution : (ce n'est pas toi Jesusonline qui
disait sur je ne sais quel tuto que le developpeur de base était
féniant ? ;-)))



Lors du page Load je rempli un ArrayList avec un datareader. Cet
arrayList va servir plus tard a remplir les datagrid en question (Je le
fais a chaque publication)



Ensuite, si je suis au premier chargement, je rempli mon repeater principal avec un autre datareader.



Lors de l'évenement onItemCreated, je rempli pour chaque élément deux
datagrid grâce à un arrayList que je crée à chaque fois en
selectionnant les bons éléments dans mon arrayList de départ.



Si j'ai bien compris le processus de création de la page, lors d'une
publication, l'évenement onItemCreated ne sera pas déclenché car on ne
reconstruit pas le repeater. Mais comme le ViewState est à True, je
m'atendai à ce que mon datagrid ne se vide pas... (Lors d'une
publication où je reconstruit le repeater pour valider des modifs par
exemple, le datagrid se rerempli)



C'est assez précis ou je dois sortir tout le code ?



Merci beaucoup !
Commenter la réponse de benjiiim94
benjiiim94 96 Messages postés vendredi 17 décembre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 10 août 2005 à 11:06
0
Merci
Bon, je préfère le recharger à chaque fois c'est plus simple ! Je
voulais essayer d'optimiser a fond les ressources serveurs mais ce
n'est pas grave, je préfère faire comme ca que de bidouiller vu mon
avancement dans l'apprentissage du .net...



Merci de m'avoir éclairé sur ce point !



En passant, j'ai une petite question qui ne mérite pas d'ouvrir un
autre post : Le designer de visual est totalement perdu lorsqu'il n'a
pas de connection "locale" associé à ces controles. Par exemple, quand
on appel une connection comme ceci :



this.myConnection = (System.Data.OleDb.OleDbConnection)Session["myConnection"];



Une solution pour que le puissant mais fébrile designer ne me lache pas a cause d'une ligne ?



Merci
Commenter la réponse de benjiiim94
benjiiim94 96 Messages postés vendredi 17 décembre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 10 août 2005 à 11:29
0
Merci
Vivement que je me mette a .net 2 alors !



Merci
Commenter la réponse de benjiiim94

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.