设定:
我的页面有一个下拉列表,其值会动态填充。根据选择的项目,在运行时动态创建多个TextBox。用户然后将信息填入文本框并单击提交按钮。
问题:
从提交按钮回发后,我需要在Page_Init(BEFORE LoadViewState)期间再次动态创建TextBox,以便在加载ViewState之后,我的Button_Click事件可以保存/执行用户输入的任何操作。问题是,我无法根据下拉列表中的选择重新创建文本框,因为LoadViewState尚未“选择”下拉列表。
那么,如何从视图状态读取,创建我的文本框,然后让视图状态填充文本框,然后Button_Click将使用值?
我尝试过的一件事是覆盖LoadViewState函数,以便我可以从视图状态读取,创建框,然后再次加载视图状态。这不起作用,因为调试器似乎永远不会触及我的重写函数。
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
MyBase.LoadViewState(savedState)
//'Do something like add controls
Dim test As String = RecordList.SelectedValue
//'Create controls using value "Test"
MyBase.LoadViewState(savedState)
End Sub
任何帮助将不胜感激。如果需要,我可以发布更多代码。
谢谢,
大卫
答案 0 :(得分:1)
我建议直接使用UniqueID属性从请求中检索下拉列表值:
Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
Dim selectedValue As String = Request.Form(RecordList.UniqueID)
' Recreate your dynamic controls based on the selected value
End Sub
Protected Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
' Examine dynamic controls and their values (retireved from the ViewState)
End Sub