该扩展的功能有以下几点:
1、当鼠标移到某个按钮上时,该按钮显示一个Css样式;
2、当鼠标移开该按钮时,该按钮显示另外一个Css样式;
3、当鼠标点击该按钮时,执行一个用户自己定义的javascript函数;
该extender共有以下三个文件:
HoverButtonExtender.cs
HoverButtonDesigner.cs
HoverButtonBehavior.js
其中HoverButtonDesigner.cs和HoverButtonBehavior.js的代码分别如下:
1
// (c) Copyright Microsoft Corporation.
2
// This source is subject to the Microsoft Permissive License.
3
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
4
// All other rights reserved.
5
6
7
// README
8
//
9
// There are two steps to adding a property:
10
//
11
// 1. Create a member variable to store your property
12
// 2. Add the get_ and set_ accessors for your property.
13
//
14
// Remember that both are case sensitive!
15
//
16
17
Type.registerNamespace('HoverButton');
18
19
HoverButton.HoverButtonBehavior = function(element)
{
20
21
HoverButton.HoverButtonBehavior.initializeBase(this, [element]);
22
23
// TODO : (Step 1) Add your property variables here
24
//
25
this._HoverButtonCssClass = null;
26
this._UnHoverButtonCssClass = null;
27
this._OnButtonClickScript = null;
28
this._clickHandler = null;
29
this._hoverHandler = null;
30
this._unhoverHandler = null;
31
32
}
33
34
HoverButton.HoverButtonBehavior.prototype =
{
35
36
initialize : function()
{
37
HoverButton.HoverButtonBehavior.callBaseMethod(this, 'initialize');
38
39
40
this._hoverHandler = Function.createDelegate(this, this._onTargetHover);
41
this._unhoverHandler = Function.createDelegate(this, this._onTargetUnhover);
42
if(this.get_element() && this._onButtonClick)
43
{
44
this._clickHandler = Function.createDelegate(this,this._onButtonClick);
45
$addHandler(this.get_element(),'click',this._clickHandler);
46
}
47
this._hoverBehavior = $create(AjaxControlToolkit.HoverBehavior,
{unhoverDelay:1, hoverElement: null}, null, null, this.get_element());
48
this._hoverBehavior.add_hover(this._hoverHandler);
49
this._hoverBehavior.add_unhover(this._unhoverHandler);
50
// TODO: add your initalization code here
51
},
52
53
dispose : function()
{
54
// TODO: add your cleanup code here
55
if (this._hoverBehavior)
{
56
this._hoverBehavior.dispose();
57
this._hoverBeahvior = null;
58
}
59
HoverButton.HoverButtonBehavior.callBaseMethod(this, 'dispose');
60
},
61
62
63
_onTargetHover : function(eventArgs)
64
{
65
var e = this.get_element();
66
Sys.UI.DomElement.removeCssClass(e, this._UnHoverButtonCssClass);
67
Sys.UI.DomElement.addCssClass(e, this._HoverButtonCssClass);
68
},
69
70
//onUnHover
71
_onTargetUnhover: function(eventArgs)
72
{
73
var e = this.get_element();
74
Sys.UI.DomElement.removeCssClass(e, this._HoverButtonCssClass);
75
Sys.UI.DomElement.addCssClass(e, this._UnHoverButtonCssClass);
76
},
77
_onButtonClick: function(eventArgs)
78
{
79
if (this._OnButtonClickScript)
{
80
window.setTimeout(this._OnButtonClickScript, 0);
81
}
82
},
83
// TODO: (Step 2) Add your property accessors here
84
//
85
get_HoverButtonCssClass : function()
{
86
return this._HoverButtonCssClass;
87
},
88
89
set_HoverButtonCssClass : function(value)
{
90
this._HoverButtonCssClass = value;
91
},
92
get_UnHoverButtonCssClass : function()
{
93
return this._UnHoverButtonCssClass;
94
},
95
96
set_UnHoverButtonCssClass : function(value)
{
97
this._UnHoverButtonCssClass = value;
98
},
99
100
set_OnButtonClickScript: function(value)
101
{
102
this._OnButtonClickScript = value;
103
},
104
105
get_OnButtonClickScript: function()
106
{
107
return this._OnButtonClickScript;
108
}
109
}
110
111
HoverButton.HoverButtonBehavior.registerClass('HoverButton.HoverButtonBehavior', AjaxControlToolkit.BehaviorBase);
112

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19



20

21

22

23

24

25

26

27

28

29

30

31

32

33

34



35

36



37

38

39

40

41

42

43



44

45

46

47



48

49

50

51

52

53



54

55



56

57

58

59

60

61

62

63

64



65

66

67

68

69

70

71

72



73

74

75

76

77

78



79



80

81

82

83

84

85



86

87

88

89



90

91

92



93

94

95

96



97

98

99

100

101



102

103

104

105

106



107

108

109

110

111

112

这里注意一下第80行,window.setTimeout(this._OnButtonClickScript, 0); 这个_OnButtonClickScript是一个字符串,表示客户端页面上用户自己定义的一个函数的名字,通过这个语句就能够执行整个客户端函数。有了这样的机制,用户就能够自己定义按钮的响应函数了。
HoverButtonExtender.cs































































































该扩展的使用,代码如下:
1
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
<%
@ Register Assembly="HoverButton" Namespace="HoverButton" TagPrefix="cc1"%>
5
6
<html xmlns="http://www.w3.org/1999/xhtml">
7
<head runat="server">
8
<link href="CSS/StyleSheet.css" rel="stylesheet" type="text/css" />
9
<title>测试HoverButton</title>
10
</head>
11
<body>
12
<form id="form1" runat="server">
13
<asp:ScriptManager ID="ScriptManager1" runat="server" />
14
<div>
15
<asp:textbox id="TextBox1" runat="server"></asp:textbox>
16
<asp:button id="Button1" runat="server" text="Button" />
17
<cc1:HoverButtonExtender runat="server" id="hbe" targetcontrolid="Button1" HoverButtonCssClass="hoverbutton" unhoverbuttoncssclass="unhoverbutton"></cc1:HoverButtonExtender>
18
</div>
19
</form>
20
</body>
21
</html>
22



2

3

4



5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

希望能对您有帮助。