本篇将讲述如何解决GridView控件中使用CheckBox控件无法保存状态问题。由于我们开发的CheckBox控件在GridView控件的外部使用时可以保存状态,所以我的解决方案是:另外开发一个控件,用来保存在GridView控件中的CheckBox控件的状态。我将其命名为CheckBoxHidden控件。控件代码如下:
1
using System;
2
using System.Web.UI;
3
using System.Web.UI.WebControls;
4
5
namespace 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文件,增加如下两个函数:
1
function 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
42
function 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控件的概述 #### 一、简介 在ASP.NET Web应用程序开发中,`GridView`控件扮演着至关重要的角色。它不仅被广泛应用于数据的显示,而且因其丰富的特性和灵活性,在各种复杂的数据交互场景中都有着出色的...
ASP.NET 编程知识 - GridView 控件实现数据的显示和删除 本节学习内容是新闻列表的实现,使用分页功能一个页面显示 4 条新闻。在新闻显示页面,添加一个字段“删除”,运行时,单击该行的“删除按钮时”,弹出...
- **复选框**:在 Gridview 中添加 CheckBox 控件,可以方便地让用户选择多条记录。这对于批量操作非常有用,比如批量删除或修改记录。 **6. 鼠标移到 GridView 某一行时改变该行的背景色** - **改变背景色**:当...
特别是在涉及到多条记录的管理时,利用CheckBox来辅助用户选择需要操作的数据项变得尤为实用。本文将详细介绍如何在C#环境下使用GridView控件结合CheckBox实现对数据库中记录的删除功能。 #### 一、项目搭建 1. **...
对于“删除修改每一条记录”,GridView提供了内置的行编辑和删除功能。开启这些功能,只需设置GridView的AllowEditing和AllowDeleting属性为true。然后,为Edit和Delete按钮绑定适当的事件处理程序,如RowEditing、...
此外,为了实现新闻管理功能,可以使用GridView控件结合数据源控件,通过预定义的查询、修改和删除语句,通过点击GridView中的按钮来触发对新闻条目的相应操作,如修改新闻内容、删除新闻或者查看详细信息。...
GridView由一系列行和列组成,其中每一行代表数据源中的一条记录,而每一列则对应记录的字段。默认情况下,GridView会为每一条记录生成一个模板列,用于显示字段值。 3. 数据绑定: 使用GridView的第一步通常是将...
这个文档标题提到的“GridView结合CheckBox实现多条删除”就是一种常见的场景,它涉及到GridView控件和CheckBox控件的结合使用,以允许用户选择多个记录进行批量操作。 GridView是ASP.NET中一个强大的数据绑定控件...
以上只是部分GridView的使用技巧,实际应用中,开发者还可以结合其他ASP.NET控件和服务器端事件,以及前端技术,实现更多复杂的功能和定制化的用户体验。对于初学者来说,熟练掌握这些技巧将极大地提升开发效率。
一、表头表尾 1、自定义多行表头,列合并,行合并 2、删除表身指定列、行 3、固定表头,向下拉动滚动条时,表头固定不动 4、表脚行统计,总计、平均值 二、导入导出 ...根据主键多条记录删除,单条记录删除。
在ASP.NET 2.0中,GridView控件自带了分页和排序的功能,这使得开发者无需编写额外的代码就能轻松实现这些功能。 **实现步骤:** 1. **设置允许排序**:在GridView的属性中设置`AllowSorting`为`True`。例如,在...
在实际应用中,常常需要提供全选功能,以便于用户一次性选择多条记录进行批量操作,如删除、修改等。本文将探讨两种在 GridView 控件中实现全选功能的解决方案。 **第一种:利用客户端控件实现全选** 这种方法通过...
首先,GridView控件是用于显示多条记录的表格形式的数据控件,它支持排序、分页、编辑和删除功能。由于其功能强大且易于使用,GridView通常是数据呈现的首选。在.NET 2.0及更高版本中,GridView控件增加了对数据源...
GridView是ASP.NET Web Forms中用于展示数据的一种常见控件,它提供了丰富的功能,如排序、分页、编辑、删除等。以下是一些关于GridView的使用技巧和功能详解: 1. **无代码分页排序**: - 通过设置`AllowSorting=...
在ASP.NET开发中,GridView控件是一个非常常用的数据展示组件,尤其在网页表格数据的处理上,它提供了丰富的功能和自定义选项。本资源“gridview使用大全”旨在全面讲解如何充分利用GridView控件来实现各种复杂的...
### GRID控件删除之前确认 在开发Web应用程序时,经常需要用到GRID控件来展示和管理数据。为了提高用户体验和防止误操作,实现删除操作前的确认功能是非常必要的。本篇文章将详细探讨如何在GRID控件中实现删除操作...
在ASP.NET中,GridView控件是用于展示数据的常用组件,它可以轻松地进行数据操作,如添加、编辑和删除。本篇文章将详细讲解如何在GridView...通过这些步骤,用户就能方便地选择并删除多条记录,提高了数据管理的效率。
在ASP.NET Web应用程序中,GridView控件是一种常用的数据展示组件,它可以轻松地绑定到数据源并展示数据。本文将深入探讨GridView的各种使用方法,包括代码分页、保存和恢复CheckBox的状态、排序、与DropDownList和...
在Gridview中添加CheckBox可以方便地让用户选择一条或多条记录。 #### 如何在Gridview中使用CheckBox 在Gridview中使用CheckBox通常涉及到以下几个步骤: 1. **在Gridview中添加CheckBox列**:首先需要在Gridview...