注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

汇总技巧

你快乐我快乐.... 汇集各类技巧,传播技巧,让我们共同熟练运用技巧..

 
 
 

日志

 
 

(论坛答疑点滴)用户控件动态加载PostBack后的问题  

2011-05-29 16:50:56|  分类: ◆ASP技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

很多网友在按钮的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:PlaceHolderasp:Button id=Button1 runat=serverText=加载用户控件/asp:Buttonasp:Button id=Button2 runat=serverText=获取用户控件中的值/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来找到

  评论这张
 
阅读(58)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017