【夜战鹰】【ChengKing(ZhengJian)】

【夜战鹰】【ChengKing(ZhengJian)】

博客园 首页 联系 订阅 管理
(一). 概述

         HyperLink默认没有Click事件,  重写了一个HyperLink自定义控件.

         实现原理:

         默认Hyperlink是跳到点击请求的页面, 本HyperLink自定义控件最终也是跳转到请求的页面, 但期间

        执行了自己的一个方法, 我们可以在此方法中添写自己所需的功能.

        本示例演示统计此超链接点击次数功能. [参考Asp.net 2.0高级编程]

(二). 代码实现

       1. 自定义控件 HyperLink.cs 代码

 1 /// <summary>
 2     /// Author: [ ChengKing(ZhengJian) ] 
 3     /// Blog:   Http://blog.csdn.net/ChengKing
 4     /// </summary>
 5     public partial class HyperLink : System.Web.UI.WebControls.HyperLink
 6     {
 7         public HyperLink()
 8         {            
 9         }
10 
11         /// <summary>
12         /// 返回要进行统计页面的名称[凡是点击了此控件都将经过此total.aspx页面]
13         /// </summary>
14         public string TotalPage
15         {
16             get
17             {
18                 return "total.aspx";
19             }
20         }
21 
22         /// <summary>
23         /// 1. 当基类中同名方法有virtual标志时,一般用override重写,多态;
24         ///    但当基类没有virtual关键字时,用new关键字修改基类方法,不具有多态功能.
25         /// 2. 修改NavigateUrl, 将TotalPage始终作为目标页面;
26         ///    而将用户点击的目标页面作为page参数传入
27         /// 3. 这里方法名称必须是NavigateUrl, 因为当执行单击事件时,它会自动取这个属性名称的值,进行页面跳转
28         /// </summary>
29         public new string NavigateUrl
30         {
31             get
32             {
33                 return base.NavigateUrl;
34             }
35             set
36             {
37                 string strUrl = "{0}?page={1}";
38                 strUrl = String.Format(strUrl, TotalPage, value);
39                 base.NavigateUrl = strUrl;
40             }
41         }
42     }

     2.  自定义方法所在的页面 Total.aspx.cs 代码

 1  /// <summary>
 2     /// Author: [ ChengKing(ZhengJian) ] 
 3     /// Blog:   Http://blog.csdn.net/ChengKing
 4     /// </summary>
 5     public partial class HyperLink : System.Web.UI.WebControls.HyperLink
 6     {
 7         public HyperLink()
 8         {            
 9         }
10 
11         /// <summary>
12         /// 返回要进行统计页面的名称[凡是点击了此控件都将经过此total.aspx页面]
13         /// </summary>
14         public string TotalPage
15         {
16             get
17             {
18                 return "total.aspx";
19             }
20         }
21 
22         /// <summary>
23         /// 1. 当基类中同名方法有virtual标志时,一般用override重写,多态;
24         ///    但当基类没有virtual关键字时,用new关键字修改基类方法,不具有多态功能.
25         /// 2. 修改NavigateUrl, 将TotalPage始终作为目标页面;
26         ///    而将用户点击的目标页面作为page参数传入
27         /// 3. 这里方法名称必须是NavigateUrl, 因为当执行单击事件时,它会自动取这个属性名称的值,进行页面跳转
28         /// </summary>
29         public new string NavigateUrl
30         {
31             get
32             {
33                 return base.NavigateUrl;
34             }
35             set
36             {
37                 string strUrl = "{0}?page={1}";
38                 strUrl = String.Format(strUrl, TotalPage, value);
39                 base.NavigateUrl = strUrl;
40             }
41         }
42     }
 
 
(三). 示例代码下载
 
 
 
(四). 其它自定义控件相关文章
 
posted on 2007-04-27 22:02  【ChengKing(ZhengJian)】  阅读(3252)  评论(0编辑  收藏  举报