我有一个用户控件,可以动态加载其他用户控件。问题是在回发时我的控件不存在。现在我的印象是我必须重新初始化它们。
现在要执行此操作,因为它们是UserControls并使用ascx文件,UserControl的控件都没有在空构造函数中初始化。
问题:如何在此时加载UserControl的ascx文件?
目前我正在尝试这样做:
for (int i = 0; i < count; i++)
{
Control ctrl;
if(ctrlCollectionType.Rows[i]["Type"] is UserControl)
ctrl = LoadControl((string)ctrlCollectionType.Rows[i]["Path"]);
else
this.LoadControl(ctrlCollectionType[i]["Type"], null);
ctrl.ID = i;
pnlContent.Controls.Add(ctrl);
}
其中ctrlCollectionType是userControl的类型。
编辑:按照Joel Coehoorn的意见解决。
答案 0 :(得分:3)
您必须执行两个步骤:
this.LoadControl()
调用执行此操作)Controls
集合中。您没有显示任何执行此操作的代码。此外,您需要在 viewstate在页面生命周期中恢复之前执行此操作,否则事情将无法按预期工作。由于view_ate在Page_Load事件触发之前恢复,这意味着您需要在Page_Init或更早版本上执行此操作。