`
hugh-lin
  • 浏览: 70354 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

阅读更多
    本篇将讲述如何解决GridView控件中使用CheckBox控件无法保存状态问题。由于我们开发的CheckBox控件在GridView控件的外部使用时可以保存状态,所以我的解决方案是:另外开发一个控件,用来保存在GridView控件中的CheckBox控件的状态。我将其命名为CheckBoxHidden控件。控件代码如下:
 1using System;
 2using System.Web.UI;
 3using System.Web.UI.WebControls;
 4
 5namespace HughLin.Web.UI.WebControls
 6{
 7    public class CheckBoxHidden : System.Web.UI.WebControls.HiddenField
 8    {
 9        /**//// <summary>
10        /// 获取或设置控件所在的组名称
11        /// </summary>

12        public string Group
13        {
14            get
15            {
16                object obj1 = this.ViewState["Group"];
17                return (obj1 == null? string.Empty : (string)obj1;
18            }

19            set
20            {
21                this.ViewState["Group"= value;
22            }

23        }

24
25        protected override void OnPreRender(EventArgs e)
26        {
27            if (this.Visible && !string.IsNullOrEmpty(this.Group))
28            {
29                if (!this.Page.ClientScript.IsClientScriptIncludeRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
30                {
31                    this.Page.ClientScript.RegisterClientScriptResource(typeof(CheckBox), "HughLin.CheckBox.js");
32                }

33                if (!this.Page.ClientScript.IsOnSubmitStatementRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
34                {
35                    this.Page.ClientScript.RegisterOnSubmitStatement(typeof(CheckBox), "HughLin.CheckBox.js""AspNetV2_SaveCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "')");
36                }

37                if (!this.Page.ClientScript.IsStartupScriptRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
38                {
39                    this.Page.ClientScript.RegisterStartupScript(typeof(CheckBox), "HughLin.CheckBox.js""\r\n<script language='javascript'>\nAspNetV2_RestoreCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "');\n</script>\n");
40                }

41            }

42            base.OnPreRender(e);
43        }

44    }

45}
    同时,应修改第一篇的CheckBox.js文件,增加如下两个函数:
 1function AspNetV2_RestoreCheckBoxGroupValue(group, clientId)
 2{
 3    var objArray;
 4    try
 5    {
 6        objArray = eval(group);
 7    }
 8    catch (e)
 9    {
10        return;
11    }
12    if (objArray == null || objArray.length == 0)
13    {
14        return;
15    }
16    var flag = false;
17    var objArray2 = document.getElementById(clientId);
18    if (objArray2 == null || objArray2.value.length == 0)
19    {
20        flag = true;
21    }
22    if (flag)
23    {
24        for (var i = 0; i < objArray.length; i++)
25        {
26            var e = objArray[i];
27            e.checked = false;
28        }
29    }
30    else
31    {
32        var objArray3 = objArray2.value.split(",");
33        for (var i = 0; i < objArray.length; i++)
34        {
35            var e = objArray[i];
36            var flag1 = (objArray3[i].toLowerCase() == "true"? true : false;
37            e.checked = flag1;
38        }
39    }
40}
41
42function AspNetV2_SaveCheckBoxGroupValue(group, clientId)
43{
44    var objArray;
45    try
46    {
47        objArray = eval(group);
48    }
49    catch (e)
50    {
51        return;
52    }
53    if (objArray == null || objArray.length == 0)
54    {
55        return;
56    }
57    var objValues = objArray[0].checked;
58    for (var i = 1; i < objArray.length; i++)
59    {
60        var e = objArray[i];
61        objValues += "," + objArray[i].checked;
62    }
63    document.getElementById(clientId).value = objValues;
64}

    同样我们将其编译到HughLin.dll中。
    使用是我们只需要在第二篇中的代码中加入:
    <hlAsp:CheckBoxHidden ID="CheckBoxHidden1" runat="server" Group="UserCheckBoxGroup1" />
    注意:Group应当和你的CheckBox控件的Group要相同。

    本系列中开发的CheckBox控件有一个好处就是:可以同时在多个GridView中使用,而互相不会干扰,只需设置Group的值不同即可。当然要保存多个GridView的CheckBox控件的状态,必须添加相应的ChekBoxHidden控件。

分享到:
评论

相关推荐

    GridView使用集合

    一、表头表尾 1、自定义多行表头,列合并,行合并 2、删除表身指定列、行 3、固定表头,向下拉动滚动条时,表头固定不动 4、表脚行统计,总计、平均值 二、导入导出 ...根据主键多条记录删除,单条记录删除。

    ASP.NET项目实训:“新闻发布系统”新闻类别管理--显示新闻列表.ppt

    知识准备 GridView控件 GridView控件支持下面的功能: 内置行选择功能。 以编程方式访问 GridView 对象模型以动态设置属性、处理事件等。 多个键字段。 用于超链接列的多个数据字段。 可通过主题和样式进行自定义的...

    在ASP.NET 2.0中操作数据之六十三:GridView实现批量删除数据

    同理,当用户需要同时删除多条记录时,该技术也很有用.  如果你使用过邮件系统的话,你应该对这种最常见的批删除界面很熟悉:界面里每一行都包含一个checkbox,此外,还有一个“Delete All Checked Items”按钮(如...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    7.3.8 同时更新多条记录 7.3.9 根据条件删除记录 7.4 存储过程 7.4.1 使用存储过程添加数据 7.4.2 使用存储过程查询数据 7.4.3 使用存储过程更新数据 7.4.4 使用存储过程删除数据 7.4.5 存储过程与输出参数 ...

    asp.net2.0

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    asp.net2.0数据教程

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    ASP.NET2.0数据教程

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    ASP.NET3.5从入门到精通

    9.6.2 使用GridView 显示、删除、修改数据 9.6.3 使用DataList 显示数据 9.6.4 DataList 分页实现 9.6.5 使用SQLHelper 操作数据库 9.7 小结 第 10 章访问其他数据源 10.1 使用ODBC .NET Data Provider 第一篇窗口与...

    在ASP.NET 2.0中操作数据::研究插入、更新和删除的关联事件

    当使用GridView、DetailsView或FormView控件的内建插入、编辑或删除特征时,在用户添加一条新记录或更新/删除一条现在记录的过程中发生了多个步骤。正如我们之前一节里所讨论的,在GridView中编辑一行时,保存...

    ASP.NET 3.5 开发大全11-15

    5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 ...

    ASP.NET 3.5 开发大全

    5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 ...

    ASP.NET 3.5 开发大全1-5

    5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 ...

    ASPNET35开发大全第一章

    5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 ...

    ASP.NET 3.5 开发大全word课件

    5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 ...

    C#编程经验技巧宝典

    2 &lt;br&gt;0003 设置程序代码行序号 3 &lt;br&gt;0004 开发环境全屏显示 3 &lt;br&gt;0005 设置窗口的自动隐藏功能 3 &lt;br&gt;0006 根据需要创建所需解决方案 4 &lt;br&gt;0007 如何使用“验证的目标架构”功能 4 ...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    App_Code\ People.cs 实现记录个人基本信息的自定义控件。 App_Code\ Name.cs Name属性的自定义状态管理类。 第9章(\Chapter 09) 示例描述:本章学习母版页。 MasterPage.master 一个简单的母版页。 9-01....

    asp.net知识库

    如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题? Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using...

    在ASP.NET 2.0中操作数据之二十一:实现开放式并发

    在没有任何并发策略的地方,当两个用户同时编辑某一条记录,最后提交的用户的更改将覆盖先提交的用户所作的更改。  例如,假设两个用户,Jisun和Sam,都访问我们的应用软件中的一个页面,这个页面允许访问者通过一...

    在ASP.NET 2.0中操作数据之十七:研究插入、更新和删除的关联事件

     当使用GridView、DetailsView或FormView控件的内建插入、编辑或删除特征时,在用户添加一条新记录或更新/删除一条现在记录的过程中发生了多个步骤。正如我们之前一节里所讨论的,在GridView中编辑一行时,保存...

Global site tag (gtag.js) - Google Analytics