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

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

阅读更多
    在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 
分享到:
评论

相关推荐

    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.NET 2.0中操作数据::研究插入、更新和删除的关联事件

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

    ASP.NET3.5从入门到精通

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    ASP.NET 3.5 开发大全1-5

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    ASP.NET 3.5 开发大全11-15

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    ASP.NET 3.5 开发大全

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    ASPNET35开发大全第一章

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    ASP.NET 3.5 开发大全word课件

    5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件...

    C#编程经验技巧宝典

    100 &lt;br&gt;0158 如何将二进制数转换为十六进制数 100 &lt;br&gt;0159 如何实现0~9之间随机整数 101 &lt;br&gt;0160 如何实现0~1之间随机数 101 &lt;br&gt;0161 如何返回数字的绝对值 101 &lt;br&gt;5.2 控件数据处理...

    零基础学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中操作数据之十七:研究插入、更新和删除的关联事件

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

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

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

Global site tag (gtag.js) - Google Analytics