您的位置:首页 > 其它

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

2005-08-10 14:15 525 查看
在Asp.Net 2.0中新增的控件GridView可能是我们使用最普通的控件了,其用来显示数据的能力的确好用。GirdView内置有新增,修改,删除功能,结合ObjectDataSource控件,可以生成很好的三层体系的程序。但美中不足的就是其只支持单数据的操作,对于新增和修改而言倒还可以,但对于删除就不够了。我们往往希望能先选中我们要删除的记录,然后一次性删除,不仅方便而且提高了效率。
为此,我们需要有能实现“全选/全不选”的CheckBox控件来配合GridView控件,以达到我们要实现的目的。
“全选/全不选”的CheckBox控件程序代码如下:

1using System;
2using System.Collections.Specialized;
3using System.Web;
4using System.Web.UI;
5using System.Web.UI.WebControls;
6
7namespace 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文件代码如下:

1function 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
28function 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
66function 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
82function 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
下一篇将讲解如何使用该CheckBox控件实现删除GridView控件的多条记录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: