(论坛答疑点滴)用户控件动态加载PostBack后的问题
2005-04-09 09:14
573 查看
很多网友在按钮的click事件中动态添加用户控件在页面回传后消失了或者就是用户控件中的按钮事件不能触发,下面是解决办法:
(1)
首先添加一个用户控件:WebUserControl1.ascx
添加一个按钮:public System.Web.UI.WebControls.Button ucb;Text为"用户控件的按钮"(等会要在Page中用到这个按钮,所以设置为public)
<asp:Button id="ucb" Text="用户控件的按钮" runat="server"></asp:Button>
为按钮的click事件添加代码:
Response.Write(i.ToString());
i++;
在类中申明static int i=0;
这样通过点击按钮可以看到点击一次,计数增加1
(2)
添加一个页面
放置一个PlaceHolder,两个按钮
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button id="Button1" runat="server" Text="加载用户控件"></asp:Button>
<asp:Button id="Button2" runat="server" Text="获取用户控件中的值"></asp:Button>
添加一个加载用户控件的操作:
private void adduc()
{
WebUserControl1 uc=(WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
uc.ID="uc";
this.PlaceHolder1.Controls.Add(uc);
}
为第一个按钮增加click事件:
private void Button1_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]==null)
{
adduc();
ViewState["adduc"]=1;
}
}
我们在视图状态中增加一个标志位,表示是否点击了按钮来加载用户控件,当然如果已经加载了再点击按钮就不需要重复加载了。
关键的是需要在Page.IsPostBack的时候也要加载用户控件
(因为如果不这么做的话,回传的时候用户控件就消失了)
if(Page.IsPostBack)
{
if(ViewState["adduc"]!=null)
{
adduc();
}
}
下面可以点击Button1试验一下,是不是加载了用户控件?同时再点击用户控件中的按钮也能很好的触发其事件。
再为Button2添加click事件,用来读取用户控件中btn这个按钮的标题,动态加载的用户控件和设计时加载的用户控件一样也能很好的和页面进行交互:
private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]!=null)
{
Response.Write(((WebUserControl1)Page.FindControl("uc")).ucb.Text);
}
}
这里注意到在加载用户控件的时候我们为之指定了id,能够方便的通过FindControl来找到
(1)
首先添加一个用户控件:WebUserControl1.ascx
添加一个按钮:public System.Web.UI.WebControls.Button ucb;Text为"用户控件的按钮"(等会要在Page中用到这个按钮,所以设置为public)
<asp:Button id="ucb" Text="用户控件的按钮" runat="server"></asp:Button>
为按钮的click事件添加代码:
Response.Write(i.ToString());
i++;
在类中申明static int i=0;
这样通过点击按钮可以看到点击一次,计数增加1
(2)
添加一个页面
放置一个PlaceHolder,两个按钮
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button id="Button1" runat="server" Text="加载用户控件"></asp:Button>
<asp:Button id="Button2" runat="server" Text="获取用户控件中的值"></asp:Button>
添加一个加载用户控件的操作:
private void adduc()
{
WebUserControl1 uc=(WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
uc.ID="uc";
this.PlaceHolder1.Controls.Add(uc);
}
为第一个按钮增加click事件:
private void Button1_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]==null)
{
adduc();
ViewState["adduc"]=1;
}
}
我们在视图状态中增加一个标志位,表示是否点击了按钮来加载用户控件,当然如果已经加载了再点击按钮就不需要重复加载了。
关键的是需要在Page.IsPostBack的时候也要加载用户控件
(因为如果不这么做的话,回传的时候用户控件就消失了)
if(Page.IsPostBack)
{
if(ViewState["adduc"]!=null)
{
adduc();
}
}
下面可以点击Button1试验一下,是不是加载了用户控件?同时再点击用户控件中的按钮也能很好的触发其事件。
再为Button2添加click事件,用来读取用户控件中btn这个按钮的标题,动态加载的用户控件和设计时加载的用户控件一样也能很好的和页面进行交互:
private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]!=null)
{
Response.Write(((WebUserControl1)Page.FindControl("uc")).ucb.Text);
}
}
这里注意到在加载用户控件的时候我们为之指定了id,能够方便的通过FindControl来找到
相关文章推荐
- 用户控件动态加载PostBack后的问题
- 用户控件动态加载PostBack后的问题(转)
- Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
- 用户控件动态加载PostBack后的问题
- 用户控件动态加载PostBack后的问题
- 用户控件动态加载PostBack后的问题事件丢失问题
- 用户控件动态加载PostBack后的问题 (转)
- asp.net定义用户控件时,属性持久化和如何动态加载的问题
- (论坛答疑点滴)如何在用户控件内得到包含这个用户控件的页面中的控件的值
- asp.net 动态加载的用户控件属性传id值问题
- 动态加载用户控件的怪问题
- 关于动态加载用户控件的问题
- (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
- Asp.net 2.0 动态加载其他子目录用户控件问题
- Asp.net 2.0 动态加载其他子目录用户控件问题
- (论坛答疑点滴)如何在一个用户控件内操作另外一个用户控件的中的控件?
- 用户控件动态加载图片问题解决方法!
- .NET----AJAX动态加载用户控件问题
- asp.net 动态加载的用户控件属性传id值问题
- 动态加载用户控件出现的问题