2008-09-29 10 views
1

Lors de l'ajout d'un objet EditItemTemplate d'une certaine complexité (champs multiples dans un modèle), puis analyse des contrôles de l'événement RowUpdating, les contrôles saisis manuellement par l'utilisateur n'ont pas valeurs. Je suppose qu'il se passe quelque chose quand les données sont liées, mais j'ai eu des cas où simplement ajouter et attribuer à un contrôle dans codebehind a commencé le comportement et la suppression de ce code a fait fonctionner le code. Comme une solution de contournement, je peux demander (controlname.UniqueId) pour obtenir sa valeur, mais c'est plutôt un hack.La publication PostScript GridView ne définit pas les valeurs des contrôles affichés

Modifier Quand j'accéder à la valeur comme si

TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox; 

la zone de texte se trouve, mais le .Text n'est pas l'entrée d'utilisateur.

Répondre

1

Avez-vous désactivé ViewState? Avez-vous ajouté le contrôle par programme dans le modèle? Si oui, les avez-vous créés au bon moment?

0

Vous devriez être en mesure d'utiliser les GridViewUpdateEventArgs pour récupérer la valeur entrée, par exemple:

TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox; 

Je l'ai utilisé cette syntaxe avant et il fonctionne comme un charme.

0

Déplacé post-retour des données se lient à Page_Init

+0

Non, c'est trop tôt :) Ne importe où de charge à PreRender est ok IIRC. Je préfère m'en tenir à Load. – leppie

+0

Etes-vous peut-être re-binding sur la publication? – leppie

+0

à partir de http://msdn.microsoft.com/en-us/library/ms178472.aspx Pendant le chargement [Chargement de page], ... les propriétés de contrôle sont chargées [à partir de] ... état de contrôle. Donc, ma théorie est qu'il y a un problème avec le gridview ne sachant pas sur ses contrôles car ils ne sont pas encore là. –