欢迎光临
我们一直在努力

(论坛答疑点滴)用户控件动态加载PostBack后的问题-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

很多网友在按钮的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来找到

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » (论坛答疑点滴)用户控件动态加载PostBack后的问题-.NET教程,Asp.Net开发
分享到: 更多 (0)