2010-08-19 6 views
0

J'ai une grille avec un TemplateField qui est une case à cocher et dit 2 champs liés.Asp.net postback oninit

Dans Page_Load à la publication, je redéfinit la grille avec l'ensemble de données mis en cache stocké dans la session. Si l'utilisateur sélectionne la case à cocher sur la grille, lors de la publication, je peux itérer sur la grille et obtenir ces valeurs vérifiées, tout fonctionne bien.

Si je déplace le code de la liaison à la publication sur OnInit au lieu de Page_Load, je perds les données de la case cochée par l'utilisateur. Pourquoi? Les données de publication ne doivent-elles pas se superposer au-dessus de la grille après l'initialisation? Cela fonctionne avec page_load, je suppose que lorsque je redéfinis la grille, je superpose mes données sur la grille qui a des données de publication, car la colonne de la case à cocher n'est pas liée je n'écrase pas les données de publication.

REMARQUE: viewstate est désactivé sur ma grille, je lie les données (stockées en session) sur chaque publication. Également bizarre, lorsque j'utilise OnInit, à chaque publication, j'obtiens la première page de la grille, quelle que soit la page sur laquelle la publication a été déclenchée. Merci.

Répondre

1

Je crois que c'est parce que viewstate n'est pas encore chargé dans l'événement OnInit. Jetez un coup d'œil sur le http://msdn.microsoft.com/en-us/library/ms178472.aspx pour en savoir plus sur le cycle de vie de la page asp.net. J'espère que cela aide!!

+0

ViewState est désactivé sur ma grille, thats la raison pour laquelle je lie les données stockées en session sur chaque publication. – user425232

+0

Upvote pour référencer le cycle de vie ASP.NET - page TRÈS utile. – mikemanne

0

Similaire à LoadViewState, ProcessPostData est quelque chose qui se produit après OnInit, mais avant Page_Load. Je suppose que les valeurs de checkbox sont renvoyées au serveur en tant que données Post. Ainsi, je soupçonne que le problème est le même que si ViewState était activé: OnInit est trop tôt - les données affichées (valeurs de case à cocher) n'ont pas encore été appliquées à vos contrôles.

Je n'ai pas une grande expérience avec l'opération viewstate-disabled, donc mes excuses si cette réponse manque quelques nuances.

+0

Je suis d'accord avec vous, postdata n'est pas là pour OnInit et c'est OK. Je suis itératif sur la grille sur OnPageIndexChanging et là j'attends les postdata mais n'obtiens pas. Juste parce que j'ai lié la grille dans OnInit change de comportement. Je voudrais comprendre la différence entre la grille de liaison sur Page_Load Vs OnInit. Il y a quelque chose qui me manque. – user425232

+0

Il est possible que le recadrage de la grille dans OnInit rende impossible au ProcessPostData d'écraser les éléments de données corrects avec les valeurs de case à cocher. Mais c'est de la spéculation de ma part - je ne suis pas positif. Désolé - Je pense que mon manque d'expérience avec les contrôles sans affichage rend difficile pour moi d'être très utile. : - / – mikemanne