以编程方式添加用户控件不会创建其子控件

kri*_*ian 2 c# asp.net user-controls

我在项目中有一个用户控件(.ascx),我在页面的Page_Load事件处理程序中以编程方式添加到页面中,如下所示:

Controls.Add(new MyProject.Controls.ControlWidget());
Databind();
Run Code Online (Sandbox Code Playgroud)

当我尝试从控件本身访问控件的子控件时,它们不存在.

public override void DataBind()
{
  myrepeater.DataSource = GetDataSource(); 
  // throws an exception because myrepeater is null

  base.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

如何访问用户控件的子控件?我已经尝试将一个对EnsureChildControls()的调用添加到我的DataBind()覆盖中,但这似乎没有什么区别.

Ste*_*ins 5

您需要使用LoadControl来加载它,而不仅仅是实例化类.LoadControl在幕后做"神奇",将所有内容绑定并实例化前端.