我有一个带有AutoPostBack = true
的DropDownList的用户控件,我也有一个aspx页面来显示这个控件。
我在页面的OnInit方法中重新创建用户控件
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
var list = (List<Control>)Session[Controls];
if (list != null)
{
foreach (var control in list)
{
var uc = (Control)LoadControl(ControlPath);
uc.SetDropDownState(control.state);
PlaceHolderQuestion.Controls.Add(uc);
}
}
}
因此,在重新创建时我正在恢复DropDown选择,它第一次起作用,但是当我再次更改选择时,OnSelectedIndexChanged事件不会触发,这是显而易见的,因为我首先在OnInit中恢复DropDown选择,因此没有OnSelectedIndexChanged事件,因为什么都没有改变,你能建议一些解决方法吗?
更新
var uc =(Control)LoadControl(ControlPath); 需要保持用户控制事件
答案 0 :(得分:0)
经过深入研究,我发现问题出在SelectedIndexChanged事件逻辑中。 我正在使用“间接订阅”方法在我的页面逻辑中处理它, 欲了解更多信息,请查看 Indirect Subscription Approach
最初我在处理程序内部重新加载控件但是因为我在Page_Load方法中执行它所以不需要它,所以我需要做的就是更新PlaceHolder控件列表中的控件。 我希望很清楚,如果没有,请询问,我会提供更多说明。