如何动态的改变对用户控件的引用?
我使用了一个用户控件,在源视图中的代码为:
<uc1:navagWM ID= "NavagWM1 " runat= "server " />
为能够动态改变对该处不同控件的引用,我做了如下操作:
1、在后台代码中声明public string navag = " ";
并在Page_Load中对其赋值: navag = " <uc1:navagWM ID=\ "NavagWM1\ " runat=\ "server\ " /> ";
2、将源视图中 <uc1:navagWM ID= "NavagWM1 " runat= "server " /> 注释掉,再在其位置上加 <% =navag %>
但运行后,控件没有显示出来,使用文本框显示navag的值,与 <uc1:navagWM ID= "NavagWM1 " runat= "server " /> 完全一样,为什么会不显示呢?
难道是在源视图中显示的代码不能为字符串形式,而是有特殊格式吗?
------解决方案--------------------http://dannyr.cnblogs.com/archive/2004/10/13/51530.aspx
------解决方案--------------------你没有考虑的页面的生命周期
控件的创建过程是在什么时候发生的?
------解决方案--------------------请使用 Page.LoadControl 方法动态加载用户控件
// some.aspx
<asp:panel id=Panel1 runat=server />
// some.aspx.cs
... Page_Load( ...
{
MyUserControl uc = Page.LoadControl(.ascx文件所在的路径) as MyUserControl; // MyUserControl 表示你的用户控件的类名
Panel1.Controls.Add(uc);
}
------解决方案--------------------http://msdn2.microsoft.com/zh-cn/library/System.Web.UI.Page.LoadControl(VS.90).aspx