我有一个绑定到数据源的asp:FormView控件。一切都很好。
如果我将以下代码放在Init事件中:
Private Sub frmEdit_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles frmEdit.Init
Debug.WriteLine(frmEdit.Controls.Count)
End Sub
.....更新不再有效(没有例外,它只是用旧数据重新加载。)
但是,如果我将其更改为:
Private Sub frmEdit_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles frmEdit.Init
Debug.WriteLine("hello world")
End Sub
....它再次起作用。所以,区别在于我在第一个例子中访问frmEdit.Controls。我的问题是,为什么这会打破它?
答案 0 :(得分:1)
当您访问Control集合时,您正在触发代码,以确保子控件也被初始化。对于FormView,Init在生命周期中还为时尚早。您在ViewState准备好之前初始化控件,因此不会正确地重新填充控件。
您可以在生命周期的后期访问控件,我认为frmEdit.Row.Controls
就是您所追求的。