我正在尝试创建一个网页,该网页将根据下拉列表的选定值显示适当的用户控件.
基本上页面布局是这样的:
下拉选择
< 基于下拉选择创建的用户控制 >
我有一半工作...当选择改变时控件正在改变.在OnInit()中,我动态创建最后选择的控件(其值以会话状态保存,因为ViewIn在OnInit中不可用).
当发生下拉选择更改时,我删除旧的用户控件,并添加一个新的用户控件. 问题是:从选择更改事件添加新控件后,我无法在第一次回发时保存用户的更改.在第一个回发后,从OnInit而不是Change事件创建所选控件,然后保存状态,直到下一个选择更改.
这是SelectionChanged方法:
protected void SelectionChanged(object sender, EventArgs e)
{
SelectedValue = int.Parse(DropDownList.SelectedValue); //Store in Session
Control userControl = GetSpecificUserControl(SelectedValue);
PlaceHolder1.Controls.Clear(); // Remove old user control
PlaceHolder1.Controls.Add(userControl);
}
Run Code Online (Sandbox Code Playgroud)
在SelectionChanged发生后,用户对新控件所做的任何更改都不会保存在以下帖子中.但是,随后的回发会得到保存.此时,控件将在OnInit()中创建.
当控件发生变化时,是否有某种方法可以强制正确的回发和ViewState?控件更改后是否可以强制页面重新初始化?