CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

继承页面的控件?急(我只有50分。全给)VS2003

楼主shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)2006-05-02 13:34:42 在 .NET技术 / ASP.NET 提问

在BaseListPage.cs页面中(注:他没有对应的.aspx页面)  
   
   
        public   class   BaseListPage   :     protected   System.Web.UI.WebControls.LinkButton   btnFirst;  
                  protected   System.Web.UI.WebControls.LinkButton   btnPrev;  
                  protected   System.Web.UI.WebControls.LinkButton   btnNext;  
                  protected   System.Web.UI.WebControls.LinkButton   btnLast;  
                  protected   System.Web.UI.WebControls.DropDownList   drPage;  
                  protected   System.Web.UI.WebControls.Label   lblSort;         //   field  
                  protected   System.Web.UI.WebControls.Label   lblSortBy;     //   ASC/DESC  
   
   
    protected   void   SetPageStatus(   int   currPage,   int   totalPage   )  
                  {  
                          if   (   totalPage   <=   1   )  
                          {  
                                  this.btnFirst.Enabled   =   false;  
                                  this.btnPrev.Enabled   =   false;  
                                  this.btnNext.Enabled   =   false;  
                                  this.btnLast.Enabled   =   false;                                  
                          }  
                          else  
                          {  
                                  if   (   currPage   ==   1   )  
                                  {  
                                          this.btnFirst.Enabled   =   false;  
                                          this.btnPrev.Enabled   =   false;  
                                          this.btnNext.Enabled   =   true;  
                                          this.btnLast.Enabled   =   true;  
                                  }  
                                  else   if   (   currPage   ==   totalPage   )  
                                  {  
                                          this.btnFirst.Enabled   =   true;  
                                          this.btnPrev.Enabled   =   true;  
                                          this.btnNext.Enabled   =   false;  
                                          this.btnLast.Enabled   =   false;  
                                  }  
                                  else  
                                  {  
                                          this.btnFirst.Enabled   =   true;  
                                          this.btnPrev.Enabled   =   true;  
                                          this.btnNext.Enabled   =   true;  
                                          this.btnLast.Enabled   =   true;  
                                  }  
                          }  
                  }  
                private   void   PagerButtonClick(   int   actionQueryType   )  
                  {  
                          currPage   =   StringUtil.InputInt(   drPage.SelectedValue   );  
                           
                          switch   (   actionQueryType   )  
                          {  
                                  case   ACTION_QUERY_NEW   :  
                                          currPage   =   1;  
                                          break;  
                                  case   ACTION_QUERY_FIRST   :  
                                          currPage   =   1;  
                                          break;  
                                  case   ACTION_QUERY_PREV   :  
                                          currPage--;  
                                          break;  
                                  case   ACTION_QUERY_NEXT   :  
                                          currPage++;  
                                          break;  
                                  case   ACTION_QUERY_LAST   :  
                                          currPage   =   drPage.Items.Count;  
                                          break;  
                                  case   ACTION_QUERY_CHANGE   :  
                                          break;  
                                  case   ACTION_QUERY_SORT   :                                          
                                          break;  
                          }  
                           
                          if   (   actionQueryType   !=   ACTION_QUERY_SORT   )  
                          {  
                                  sortBy   =   StringUtil.InputText(   lblSortBy.Text   );  
                                  sort   =   StringUtil.InputText(   lblSort.Text   );  
                          }  
   
                          if   (   currPage   <   1   )  
                          {  
                                  currPage   =   1;  
                          }  
                                       
                          Query();  
                  }          
   
                  protected   void   drPage_SelectedIndexChanged(object   sender,   System.EventArgs   e)  
                  {  
                          PagerButtonClick(   ACTION_QUERY_CHANGE   );  
                  }  
   
                  protected   void   btnFirst_Click(object   sender,   System.EventArgs   e)  
                  {  
                          PagerButtonClick(   ACTION_QUERY_FIRST   );  
                  }  
   
                  protected   void   btnPrev_Click(object   sender,   System.EventArgs   e)  
                  {  
                          PagerButtonClick(   ACTION_QUERY_PREV   );  
                  }  
   
                  protected   void   btnNext_Click(object   sender,   System.EventArgs   e)  
                  {  
                          PagerButtonClick(   ACTION_QUERY_NEXT   );  
                  }  
   
                  protected   void   btnLast_Click(object   sender,   System.EventArgs   e)  
                  {  
                          PagerButtonClick(   ACTION_QUERY_LAST   );  
                  }  
   
   
   
   
        #region   Web   Form   Designer   generated   code  
                  override   protected   void   OnInit(EventArgs   e)  
                  {        
                          //  
                          //   CODEGEN:   This   call   is   required   by   the   ASP.NET   Web   Form   Designer.  
                          //                    
                          InitializeComponent();  
                          base.OnInit(e);  
                  }  
   
                  ///   <summary>  
                  ///   Required   method   for   Designer   support   -   do   not   modify  
                  ///   the   contents   of   this   method   with   the   code   editor.  
                  ///   </summary>  
                  protected   void   InitializeComponent()  
                  {  
  //add   the   instantiation   by   sandy  
  this.btnFirst   =   new   System.Web.UI.WebControls.LinkButton();  
  this.btnPrev   =   new   System.Web.UI.WebControls.LinkButton();  
  this.btnNext   =   new   System.Web.UI.WebControls.LinkButton();  
  this.btnLast   =   new   System.Web.UI.WebControls.LinkButton();  
  this.drPage   =   new   System.Web.UI.WebControls.DropDownList();  
  this.lblSort=new   System.Web.UI.WebControls.Label();  
  this.lblSortBy=new   System.Web.UI.WebControls.Label();  
   
                          this.btnFirst.Click   +=   new   System.EventHandler(this.btnFirst_Click);  
                          this.btnPrev.Click   +=   new   System.EventHandler(this.btnPrev_Click);  
                          this.btnNext.Click   +=   new   System.EventHandler(this.btnNext_Click);  
                          this.btnLast.Click   +=   new   System.EventHandler(this.btnLast_Click);  
                          this.drPage.SelectedIndexChanged   +=   new   System.EventHandler(this.drPage_SelectedIndexChanged);        
                  }  
                  #endregion  
   
  在EventManage.aspx.cs页面中,这个页面有对应的EventManage.aspx页面  
  public   class   EventManage   :   BaseListPage  
  {  
                    protected   System.Web.UI.WebControls.Label   lblSort;//与父类的lblSort同名,VS2003提醒我使用NEW  
  protected   System.Web.UI.WebControls.Label   lblSortBy;  
          protected   System.Web.UI.WebControls.LinkButton   btnFirst;  
  protected   System.Web.UI.WebControls.LinkButton   btnPrev;  
  protected   System.Web.UI.WebControls.LinkButton   btnNext;  
  protected   System.Web.UI.WebControls.LinkButton   btnLast;  
  protected   System.Web.UI.WebControls.DropDownList   drPage;  
               
   
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   This   call   is   required   by   the   ASP.NET   Web   Form   Designer.  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
       
  ///   <summary>  
  ///   Required   method   for   Designer   support   -   do   not   modify  
  ///   the   contents   of   this   method   with   the   code   editor.  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.dataGrid.SortCommand   +=   new   System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dataGrid_SortCommand);  
  this.dataGrid.ItemDataBound   +=   new   System.Web.UI.WebControls.DataGridItemEventHandler(this.dataGrid_ItemDataBound);  
  this.lnkReflesh.Click   +=   new   System.EventHandler(this.lnkReflesh_Click);  
  this.btnFirst.Click   +=   new   System.EventHandler(this.btnFirst_Click);  
  this.btnPrev.Click   +=   new   System.EventHandler(this.btnPrev_Click);  
  this.btnNext.Click   +=   new   System.EventHandler(this.btnNext_Click);  
  this.btnLast.Click   +=   new   System.EventHandler(this.btnLast_Click);  
  this.drPage.SelectedIndexChanged   +=   new   System.EventHandler(this.drPage_SelectedIndexChanged);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
   
  我跟踪到this.btnFirst_Click,没错,因为在子类里没有btnFirst_Click函数。它调用了父类的btnFirst_Click函数,然而我发现在父类里的btnFirst控件还是父类的,不是子类的,因此SetPageStatus()一点用都没有,对针对父类的。而父类的显示不出来。做了等于白做。我  
  只知道这样的办法一定是可行。但我不知道错在哪里。请各位指教!!! 问题点数:50、回复次数:20Top

1 楼sunchaohuang(流星飞狐(oO!))回复于 2006-05-02 13:57:50 得分 0

????????????????说的不够清楚Top

2 楼flyzq()回复于 2006-05-02 14:08:51 得分 5

说说我的想法,可以在BaseListPage试试添加一个含参数构造函数,参数为那些控件,在EventManage调用BaseListPage的构造函数进行初试化Top

3 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-02 15:02:44 得分 0

我去掉子类的那个控件定义,。或者再加上New都不行Top

4 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-02 16:50:28 得分 0

Please   Help   UpTop

5 楼xinke_li(科科)回复于 2006-05-02 17:37:03 得分 0

我的天,看着都费劲,也用中文说一说讲的什么意思嘛。Top

6 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-02 17:53:47 得分 0

基类提供一个基本的分页功能Top

7 楼power12928266()回复于 2006-05-03 20:16:33 得分 0

路过!!帮凯哥顶一下Top

8 楼zhujiechang(小朱)回复于 2006-05-03 21:30:25 得分 0

:后面的东西写错了Top

9 楼jeremychen001181(Τιτάνες)回复于 2006-05-03 21:31:35 得分 10

修改子类中InitializeComponent的代码如下:  
   
  举个btnFirst的例子:  
  private   void   InitializeComponent()  
  {  
  this.btnFirst.Click   +=   new   System.EventHandler(base.btnFirst_Click);  
   
  }Top

10 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-06 15:00:11 得分 0

后面的东西写错了??????  
   
  哪里写错了拉。。。Top

11 楼jeremychen001181(Τιτάνες)回复于 2006-05-06 18:27:18 得分 0

this.lnkReflesh.Click   +=   new   System.EventHandler(this.lnkReflesh_Click);  
  this.btnFirst.Click   +=   new   System.EventHandler(this.btnFirst_Click);  
  this.btnPrev.Click   +=   new   System.EventHandler(this.btnPrev_Click);  
  this.btnNext.Click   +=   new   System.EventHandler(this.btnNext_Click);  
  应该调用基类的btnFirst_Click,不是吗?  
  改为this.btnFirst.Click   +=   new   System.EventHandler(base.btnFirst_Click);  
  试试Top

12 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-07 14:02:40 得分 0

是的啊。。。没有错啊。。我跟踪进去,都是调用了base中的btnFirst_Click事件。我在子类里的根本没有这个事件处理函数。错不在这里。错在base基类的btnFirst_Click事件处理的是父类的控件,它应该处理子类里的控件。。  
    现在的问题转换为父类中如何引用子类中的同名控件Top

13 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-08 14:27:51 得分 0

UPTop

14 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-09 13:00:18 得分 0

UP!!!!Top

15 楼flamelp(翔天)回复于 2006-05-09 13:53:27 得分 5

控件好象不能继承,不知道那位高手也许可以。  
  你可以把this.btnFirst_Click写成父类的方法,在子类的事件中调用这样方法就可以了Top

16 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-09 23:05:11 得分 0

this.btnFirst_Click写成父类的方法.这个已经是做好了.现在关键是现在的问题转换为父类中如何引用子类中的同名控件  
  Top

17 楼jeremychen001181(Τιτάνες)回复于 2006-05-10 04:37:45 得分 0

如果你在父类的this.btnFirst_Click里  
  输入Response.Write(   ((LinkButton)sender).Text   );  
   
  按你的说法,输出的是父类的BUTTON的TEXT吗?你父类不是没有前台页面的吗Top

18 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-10 22:20:18 得分 0

对啊..没有前台页面的Top

19 楼shankaipingo(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)回复于 2006-05-10 22:21:48 得分 0

但是你设断点去看的话.发现LinkButton.   Text还是基类的.可见他还是用基类的控件Top

20 楼jeremychen001181(Τιτάνες)回复于 2006-05-11 01:36:26 得分 30

怪事,我输出的TEXT就是子类的BUTTON。  
   
  父类:  
  public   class   BaseListPage   :     System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.LinkButton   btnFirst;  
   
  private   void   PagerButtonClick(   string   actionQueryType   )  
  {  
  Response.Write(   actionQueryType   );  
  }    
   
  protected   void   btnFirst_Click(object   sender,                                         system.EventArgs   e)  
  {  
  string   s   =   ((System.Web.UI.WebControls.LinkButton)sender).Text;  
  PagerButtonClick(   s   );  
    }  
   
                                  /*...*/  
   
  protected   void   InitializeComponent()  
  {  
  //add   the   instantiation   by   sandy  
  this.btnFirst   =   new   System.Web.UI.WebControls.LinkButton();  
   
  this.btnFirst.Click   +=   new   System.EventHandler(this.btnFirst_Click);  
   
  }  
  }  
   
   
  子类:  
   
  public   class   WebForm1   :   BaseListPage  
  {  
                protected   System.Web.UI.WebControls.LinkButton   btnFirst;  
   
   
                /*...*/  
   
                private   void   InitializeComponent()  
  {          
  this.btnFirst.Click   +=   new   System.EventHandler(this.btnFirst_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }Top

相关问题

关键词

得分解答快速导航

  • 帖主:shankaipingo
  • flyzq
  • jeremychen001181
  • flamelp
  • jeremychen001181

相关链接

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

广告也精彩

反馈

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