在Asp.Net 2.0中新增的控件GridView可能是我们使用最普通的控件了,其用来显示数据的能力的确好用。GirdView内置有新增,修改,删除功能,结合ObjectDataSource控件,可以生成很好的三层体系的程序。但美中不足的就是其只支持单数据的操作,对于新增和修改而言倒还可以,但对于删除就不够了。我们往往希望能先选中我们要删除的记录,然后一次性删除,不仅方便而且提高了效率。
为此,我们需要有能实现“全选/全不选”的CheckBox控件来配合GridView控件,以达到我们要实现的目的。
“全选/全不选”的CheckBox控件程序代码如下:
CheckBox.js文件代码如下:
为此,我们需要有能实现“全选/全不选”的CheckBox控件来配合GridView控件,以达到我们要实现的目的。
“全选/全不选”的CheckBox控件程序代码如下:
1
using System;
2
using System.Collections.Specialized;
3
using System.Web;
4
using System.Web.UI;
5
using System.Web.UI.WebControls;
6
7
namespace HughLin.Web.UI.WebControls
8
{
9
//
/ <summary>
10
//
/ 可全选/全不选复选框控件
11
//
/ </summary>
12
public class CheckBox : System.Web.UI.WebControls.CheckBox
13
{
14
public CheckBox()
15
{
16
}
17
18
//
/ <summary>
19
//
/ 获取或设置被绑定的数据
20
//
/ </summary>
21
public string BindedValue
22
{
23
get
24
{
25
object obj1
=
this
.ViewState[
"
BindedValue
"
];
26
return
(obj1
==
null
)
?
string.Empty : (string)obj1;
27
}
28
set
29
{
30
if
(
!
string.IsNullOrEmpty(value))
31
{
32
this
.ViewState[
"
BindedValue
"
]
=
value;
33
}
34
}
35
}
36
37
//
/ <summary>
38
//
/ 获取或设置控件所在的组名称
39
//
/ </summary>
40
public string Group
41
{
42
get
43
{
44
object obj1
=
this
.ViewState[
"
Group
"
];
45
return
(obj1
==
null
)
?
string.Empty : (string)obj1;
46
}
47
set
48
{
49
this
.ViewState[
"
Group
"
]
=
value;
50
}
51
}
52
53
//
/ <summary>
54
//
/ 获取或设置一个值,该值标识控件是否为父级别
55
//
/ </summary>
56
public bool IsParent
57
{
58
get
59
{
60
object obj1
=
this
.ViewState[
"
IsParent
"
];
61
return
(obj1
==
null
)
?
false
: (bool)obj1;
62
}
63
set
64
{
65
this
.ViewState[
"
IsParent
"
]
=
value;
66
}
67
}
68
69
protected override
void
OnPreRender(EventArgs e)
70
{
71
if
(
this
.Visible
&&
this
.Enabled
&&
!
string.IsNullOrEmpty(
this
.Group))
72
{
73
if
(
!
this
.Page.ClientScript.IsClientScriptIncludeRegistered(
typeof
(CheckBox),
"
HughLin.CheckBox.js
"
))
74
{
75
this
.Page.ClientScript.RegisterClientScriptResource(
typeof
(CheckBox),
"
HughLin.CheckBox.js
"
);
76
}
77
string text1
=
"
document.getElementById(\
""
+ this.ClientID +
"
\
"
)
"
;
78
this
.Page.ClientScript.RegisterArrayDeclaration(
this
.Group, text1);
79
}
80
base.OnPreRender(e);
81
}
82
83
protected override
void
Render(HtmlTextWriter writer)
84
{
85
if
(
this
.Enabled
&&
this
.Visible
&&
!
string.IsNullOrEmpty(
this
.Group))
86
{
87
if
(
!
string.IsNullOrEmpty(
this
.BindedValue))
88
{
89
writer.AddAttribute(
"
value
"
,
this
.BindedValue);
90
}
91
writer.AddAttribute(
"
isparent
"
,
this
.IsParent.ToString());
92
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
"
javascript:AspNetV2_Check(this, '
"
+
this
.Group
+
"
');
"
);
93
}
94
base.Render(writer);
95
}
96
}
97
}

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

CheckBox.js文件代码如下:
1
function
AspNetV2_Check(item, group)
2
{
3
var
itemIsParent
=
(item.isparent.toLowerCase()
==
"
true
"
)
?
true
:
false
;
4
var
itemChecked
=
item.checked;
5
var
objArray;
6
try
7
{
8
objArray
=
eval(group);
9
}
10
catch
(e)
11
{
12
return
;
13
}
14
if
(objArray
==
null
||
objArray.length
==
0
)
15
{
16
return
;
17
}
18
if
(itemIsParent)
19
{
20
AspNetV2_CheckAll(objArray, itemChecked);
21
}
22
else
23
{
24
AspNetV2_CheckIt(objArray, itemChecked);
25
}
26
}
27
28
function
AspNetV2_CheckIt(newArray, itemChecked)
29
{
30
if
(
!
itemChecked)
31
{
32
for
(
var
i
=
0
; i
<
newArray.length; i
++
)
33
{
34
var
e
=
newArray[i];
35
var
isParent
=
(e.isparent.toLowerCase()
==
"
true
"
)
?
true
:
false
;
36
if
(isParent)
37
{
38
e.checked
=
false
;
39
}
40
}
41
}
42
else
43
{
44
var
objAll;
45
var
allChecked
=
0
;
46
for
(
var
i
=
0
; i
<
newArray.length; i
++
)
47
{
48
var
e
=
newArray[i];
49
var
isParent
=
(e.isparent.toLowerCase()
==
"
true
"
)
?
true
:
false
;
50
if
(e.checked
&&
!
isParent)
51
{
52
allChecked
++
;
53
}
54
else
if
(isParent)
55
{
56
objAll
=
e;
57
}
58
}
59
if
(allChecked
==
newArray.length
-
1
)
60
{
61
objAll.checked
=
true
;
62
}
63
}
64
}
65
66
function
AspNetV2_CheckAll(newArray, itemChecked)
67
{
68
for
(
var
i
=
0
; i
<
newArray.length; i
++
)
69
{
70
var
e
=
newArray[i];
71
var
isParent
=
(e.isparent.toLowerCase()
==
"
true
"
)
?
true
:
false
;
72
if
(
!
isParent)
73
{
74
if
(e.checked
!=
itemChecked)
75
{
76
e.checked
=
itemChecked;
77
}
78
}
79
}
80
}
81
82
function
AspNetV2_CheckHasData(group)
83
{
84
var
objArray;
85
var
hasData
=
false
;
86
try
87
{
88
objArray
=
eval(group);
89
}
90
catch
(e)
91
{
92
return
hasData;
93
}
94
if
(objArray
==
null
||
objArray.length
==
0
)
95
{
96
return
hasData;
97
}
98
for
(
var
i
=
0
; i
<
objArray.length; i
++
)
99
{
100
var
e
=
objArray[i];
101
if
(e.checked)
102
{
103
hasData

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
