CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

动态加载用户控伯的问题

楼主FreeIn2006(2006年起,我终于解脱了)2006-11-04 10:23:27 在 .NET技术 / ASP.NET 提问

我在一个页面里如test.aspx,一个下拉列表,如选择选项一则动态加载用户控件user1.ascx,选择选项二则加载用户控件user2.ascx,这个没问题,  
   
  但在操作用户控件里的事件,如提交时,他又回到了初始加载的用户控件,怎么回事啊?我快疯了。。。  
   
  test.aspx  
  ------------------------  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  if(Session["Login"]!=null)  
  {  
  LoadNews();//加载默认用户控件  
  }  
  else  
  {  
  Response.Redirect("error.aspx?para=nologin");  
  } }  
   
   
  user1.ascx  
  ----------------------------------------  
  page_load里啥都没做,就是只在一个提交按钮里有事件而已。  
   
   
   
   
  急啊,请帮忙,谢谢 问题点数:50、回复次数:7Top

1 楼FreeIn2006(2006年起,我终于解脱了)回复于 2006-11-04 10:24:57 得分 0

注:用PlaceHolder加载的Top

2 楼FreeIn2006(2006年起,我终于解脱了)回复于 2006-11-04 10:31:10 得分 0

也就是动态加载的用户控件事件无法执行,但默认的可以,当执行其它的后全都回到了默认的那个用户控件,而且默认的里有个下载列表,也为空了。。。。。。。。。。。。。。。。Top

3 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-04 12:51:07 得分 0

没看懂你的描述。  
   
  首先你确定动态加载用户控件的逻辑是否正确。你在页面上放一个按钮用于回发页面,然后看回发之后页面上是否加载了准确的动态控件并且是否保持了全部的状态。你把现象描述的简单直接一点。Top

4 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-04 12:53:27 得分 0

我的意思是在页面上放一个与任何一个用户控件都无关的按钮,并且在操作用户控件的切换之后,用这个无关的按钮刷新页面。先诊断最基本的问题,不要一上来就在用户控件内部乱乱地测试。Top

5 楼free_wang()回复于 2006-11-04 13:11:24 得分 0

upTop

6 楼yanghuijun(会飞的鱼)回复于 2006-11-04 14:36:41 得分 0

这种情况确实要用placeholder控件动态加载!!  
  思路:  
  做一个COOKIE或SESSION保存你提交前下拉框中的值,然后在page_load中加载你cookie或session的值  
   
  如  
  在pageload事件中加入  
  PlaceHolder1.Controls.Clear()  
  PlaceHolder1.Controls.Add(.....)  
  其中....为你用户控件的路径,对应你下拉列表中值Top

7 楼blackant2(乔峰)回复于 2006-11-04 15:22:12 得分 0

这是用户控件1  
   
  <%@   Control   Language="C#"   ClassName="uc1"   %>  
   
  <script   runat="server">  
          //定义事件  
          public   event   EventHandler   ButtonClick;  
           
          //绑定事件  
          protected   void   Page_Load(object   sender,   EventArgs   e)   {  
                  this.btn_uc1.Click   +=   new   EventHandler(btn_uc1_Click);  
          }  
   
          //实现事件  
          void   btn_uc1_Click(object   sender,   EventArgs   e)  
          {  
                  Response.Write("<br/>用户控件1响应button   click事件");  
                  ButtonClick(this,e);  
          }  
  </script>  
  <asp:Button   runat="server"     ID="btn_uc1"   Text="uc1"/>  
   
  用户控件2  
  <%@   Control   Language="C#"   ClassName="uc2"   %>  
   
  <script   runat="server">  
          public   event   EventHandler   ButtonClick;  
           
          protected   void   Page_Load(object   sender,   EventArgs   e)   {  
                  this.btn_uc1.Click   +=   new   EventHandler(btn_uc1_Click);  
          }  
   
          void   btn_uc1_Click(object   sender,   EventArgs   e)  
          {  
                   
                  Response.Write("<br>用户控件2响应button   click事件");  
                  ButtonClick(this,e);  
          }  
  </script>  
  <asp:Button   runat="server"     ID="btn_uc1"   Text="uc2"/>  
   
  两者只是表示不同,实现机制是一样的  
  在aspx页面中的调用如下  
  <%@   Page   Language="C#"   %>  
  <!--注册用户控件-->  
  <%@   Register   Src="uc1.ascx"   TagName="uc1"   TagPrefix="uc1"   %>  
  <%@   Register   Src="uc2.ascx"   TagName="uc2"   TagPrefix="uc2"   %>  
  <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
   
  <script   runat="server">  
          void   Page_Load(object   sender,   EventArgs   e)   {  
                  //依选择项不同动态载入控件,并绑定到不同的事件  
                  if   (rbl.SelectedIndex   ==   1)  
                  {  
                          uc2   uc2   =   new   uc2();  
                          uc2.ButtonClick   +=   new   EventHandler(uc2_ButtonClick);  
                          form1.Controls.Add(uc2);  
                           
                  }  
                  else   {  
                          uc1   uc1   =   new   uc1();  
                          uc1.ButtonClick   +=   new   EventHandler(uc1_ButtonClick);  
                          form1.Controls.Add(uc1);  
                  }  
          }  
   
          void   uc2_ButtonClick(object   sender,   EventArgs   e)  
          {  
                  Response.Write("<br/>页面响应用户控件2的button   click事件");  
          }  
   
          void   uc1_ButtonClick(object   sender,   EventArgs   e)  
          {  
                  Response.Write("<br/>页面响应用户控件1的button   click事件");  
          }  
  </script>  
   
  <html   xmlns="http://www.w3.org/1999/xhtml"   >  
  <head   runat="server">  
          <title>Untitled   Page</title>  
  </head>  
  <body>  
          <form   id="form1"   runat="server">  
          <div>  
          <asp:RadioButtonList   runat="server"   ID="rbl"   AutoPostBack="true">  
          <asp:ListItem   Text="用户控件1"></asp:ListItem>  
          <asp:ListItem   Text="用户控件2"></asp:ListItem>  
          </asp:RadioButtonList>  
           
          </div>  
          </form>  
  </body>  
  </html>  
   
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:FreeIn2006

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo