zoukankan      html  css  js  c++  java
  • saucer(思归)解决的关于:页面A.aspx 动态载入用户自定义控件a.ascx,但a.ascx中的按钮提交后,不执行按钮的事件,而是直接刷新页面 Virus

    还没解决啊?象我前面说的,你需要记住你目前的控件,然后在Page_Load或以前事件里重新Load,下面是个简单的例子,试着在文本框里输入b.ascx或c.ascx    
       
      1.   TestA.ascx:  
       
      <%@   Register   TagPrefix="uc"   TagName="MyControl"   Src="A.ascx"   %>  
      <form   runat="server">  
      <uc:MyControl   id="mc"   runat="server"/>  
      <hr>  
     <asp:Panel   id="ContentPane"   runat="server"   />  
      <asp:Button   id="btn"   runat="server"   Text="Refresh"   />  
      </form>  
       
      2.   a.ascx:  
       
      <asp:TextBox   id="tb1"   runat="server"   />  
      <asp:LinkButton   id="LinkButton1"   runat="server"   Text="Load"   OnClick="LinkButton1_Click"/>  
      <script   language="C#"   runat="server">  
      private   void   LinkButton1_Click(object   sender,   System.EventArgs   e)  
      {  
          string   s   =   tb1.Text.Trim();  
          if   (!s.Equals(String.Empty))  
          LoadUserControl(s);  
      }  
       
       
      string   LoadedControl  
      {  
          get  
          {  
      object   o   =   ViewState["LoadedControl"];  
      if   (o   ==   null)  
      return   "";  
      else  
      return   (string)ViewState["LoadedControl"];  
          }  
          set  
          {  
      ViewState["LoadedControl"]   =   value;  
          }  
      }  
       
      int   LoadedControlID  
      {  
          get  
          {  
      object   o   =   ViewState["LoadedControlID"];  
      if   (o   ==   null)  
      return   0;  
      else  
      return   (int)ViewState["LoadedControlID"];  
          }  
          set  
          {  
      ViewState["LoadedControlID"]   =   value;  
          }  
      }  
       
      void   LoadUserControl(string   strPathName)  
      {  
          if   (strPathName.Equals(String.Empty))  
      return;  
       
          Control   parent   =   Page.FindControl("ContentPane");  
       
          if   (LoadedControl   !=   strPathName)  
          {  
      if   (parent.Controls.Count   >   0)  
      parent.Controls.Clear();  
       
          LoadedControlID++;  
          }  
       
          LoadedControl   =   strPathName;  
       
          Control   c   =   LoadControl(strPathName);  
       
          if   (c   !=   null)  
          {  
          c.ID   =   "ID"   +     LoadedControlID.ToString()   ;  
          parent.Controls.Add(c);  
          }  
      }  
       
      void   Page_Load(Object   sender,   EventArgs   e)  
      {  
        if   (!LoadedControl.Equals(String.Empty))  
      LoadUserControl(LoadedControl);  
      }  
       
      </script>  
       
      3.   b.ascx:  
      b.ascx:   <%=DateTime.Now%>  
      <asp:Button   id="btn"   runat="server"   Text="Button   in   B.ascx"   OnClick="Button1_Click"   />  
      <script   language="C#"   runat="server">  
      private   void   Button1_Click(object   sender,   System.EventArgs   e)  
      {  
          Page.Response.Write("BUtton   in   B   is   Clicked   at   "   +   DateTime.Now.ToString());  
      }  
      </script>  
       
      4.   c.ascx:  
      c.ascx:   <%=DateTime.Now%>  
       
      <asp:Button   id="btn"   runat="server"   Text="Button   in   C.ascx"   OnClick="Button1_Click"   />  
      <script   language="C#"   runat="server">  
      private   void   Button1_Click(object   sender,   System.EventArgs   e)  
      {  
          Page.Response.Write("BUtton   in   C   is   Clicked   at   "   +   DateTime.Now.ToString());  
      }  
      </script>

    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    函数---迭代器&生成器&列表解析&三元表达式
    python函数模拟mysql增删改查功能
    装饰器
    函数----模块化的程序设计
    文件操作
    字符编码
    python的对象类型-----列表&元组&字典
    Mac上vmware虚拟机Windows10安装JDK8及配置环境
    Windows10显示桌面我的电脑等图标
    HTTP状态码:300400500 错误代码
  • 原文地址:https://www.cnblogs.com/virusswb/p/1158095.html
Copyright © 2011-2022 走看看