• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-01 11:09 | 作者: admin | 来源: | 查看: 35次 | 进入软件测试论坛讨论

领测软件测试网
很多网友在按钮的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来找到

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网