我正在使用Panel
控件创建容器,如下所示:
public class CustomContainer : Panel
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
var control this.Page.LoadControl("web user control path.ascx");
control.ID = "userControlId";
control.RenderControl(writer);
base.RenderBeginTag(writer);
}
public void ShowMessage(string message)
{
var control = this.FindControl("userControlId"); // control here is null!!
var custom = control as CustomControl;
custom.Message = message;
}
}
当我尝试找到我呈现的标识为userControlId
的控件时,它总是返回null!
有谁知道发生了什么?我该如何解决这个问题?
顺便说一句:我无法在CustomControl
方法中添加CreateChildControls
,因为如果CustomContainer
有代码块,我会遇到异常!
由于控件无法修改Controls集合 包含代码块(即<%...%>)。
答案 0 :(得分:0)
您可能在呈现控件之前调用ShowMessage
。尝试在ShowMessage
或OnPreLoad
期间致电OnLoad
。基本上,在Render
之后的任何地方。