您的位置:首页 > 其它

实现GridView控件的删除多条记录功能系列(1)

2006-04-11 16:31 627 查看
在Asp.Net 2.0中新增的控件GridView可能是我们使用最普通的控件了,其用来显示数据的能力的确好用。GirdView内置有新增,修改,删除功能,结合ObjectDataSource控件,可以生成很好的三层体系的程序。但美中不足的就是其只支持单数据的操作,对于新增和修改而言倒还可以,但对于删除就不够了。我们往往希望能先选中我们要删除的记录,然后一次性删除,不仅方便而且提高了效率。
为此,我们需要有能实现“全选/全不选”的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

}

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 = true;
104

break;
105

}
106

}
107

return hasData;
108

}

要使代码能够编译成功,必须在AssemblyInfo.cs文件中配置js文件的引用
using System.Web.UI;
[assembly: WebResource("HughLin.CheckBox.js", "application/x-javascript")]
编译后生成 HughLin.dll
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: