1

我有一个带有 DropDownList 的用户控件AutoPostBack = true,还有一个 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); 需要保持用户控制事件

4

1 回答 1

0

经过深入研究,我发现问题出在 SelectedIndexChanged 事件逻辑中。我正在使用“间接订阅”方法在我的页面逻辑中处理它,有关更多信息,请查看 间接订阅方法

最初我是在处理程序中重新加载控件,但这不是必需的,因为我也在 Page_Load 方法中执行此操作,所以我需要做的就是更新我的 PlaceHolder 控件列表中的控件。我希望它清楚,如果没有,请询​​问,我将提供更多描述。

于 2014-05-14T11:17:05.707 回答