我在项目中有一个用户控件(.ascx),我在页面的Page_Load事件处理程序中以编程方式添加到页面中,如下所示:
Controls.Add(new MyProject.Controls.ControlWidget()); Databind();
当我尝试从控件本身访问控件的子控件时,它们不存在.
public override void DataBind() { myrepeater.DataSource = GetDataSource(); // throws an exception because myrepeater is null base.DataBind(); }
如何访问用户控件的子控件?我已经尝试将一个对EnsureChildControls()的调用添加到我的DataBind()覆盖中,但这似乎没有什么区别.
您需要使用LoadControl来加载它,而不仅仅是实例化类.LoadControl在幕后做"神奇",将所有内容绑定并实例化前端.