2010-03-15 3 views
0

J'ai un aspic: contrôle FormView lié à une source de données. Tout fonctionne bien.Comportement étrange FormView .... mise à jour ne fonctionne

Si je mets le code suivant dans l'événement Init: (. Sans exception, il vient de se rechargements avec les anciennes données)

Private Sub frmEdit_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles frmEdit.Init 
    Debug.WriteLine(frmEdit.Controls.Count) 
End Sub 

..... la mise à jour ne fonctionne plus

Cependant, si je le change à ceci:

Private Sub frmEdit_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles frmEdit.Init 
    Debug.WriteLine("hello world") 
End Sub 

.... cela fonctionne encore. Donc, la différence est que j'accède au frmEdit.Controls dans le premier exemple. Ma question est la suivante: pourquoi cela le brise-t-il?

Répondre

1

Lorsque vous accédez à une collection de contrôle, vous déclenchez le code assurant que les contrôles enfants sont initialisés aussi bien. Pour un FormView, Init est beaucoup trop tôt dans le cycle de vie pour cela. Vous initialisez des contrôles avant que ViewState soit prêt, les contrôles ne seront donc pas correctement remplis.

Vous pouvez accéder aux commandes plus tard dans le cycle de vie et je pense que frmEdit.Row.Controls est ce que vous êtes après.