如何扩展ASP.NET GridView控件

开发 后端
本文将聚焦对ASP.NET2.0内置的GridView进行扩展的一系列新功能。通过七个特征让您更轻松掌握GridView控件。

本文详细解释如何扩展ASP.NET GridView控件,同样还将解释了扩展后的GridView控件所具有的新的重要特征:基于行的上下文菜单和GridViews行的过滤功能。

引言

本文将聚焦对扩展ASP.NET GridView控件后的一系列新功能。其中本文介绍两个主要特征:基于行的上下文菜单(Row_base ContextMenu)和基于过滤功能的GridView的行,在上周我曾经介绍了GridView控件。

在我们自定义的GridView控件里,提供了几个具有“高效率”功能的扩展,不过,这些功能都不是GridView控件自带的基本功能,正如您即将看到的,我们需要要重构这些功能。 扩展现在的GridView控件可以让您更能够控件常规GridView所没有的功能,另外,扩展该功能后,您以后就可以不断重复的使用这些新特性。

我们准备增加如下几个特征:

1、行的单击

2、行的双击

3、基于行的上下文菜单

4、头元素的升序降序排列

5、当页面记录树木小于PageSize时,修正GridView的高度

6、内置的过滤文本框

7、内置的复选框

除此以外,我们还将添加三个简单按钮,可以利用他们在客户端添加一些简单的确认函数

·确认按钮(Confirm Button)

·图片按钮(Confirm Image Button)

·链接按钮(Confirm Link Button)

扩展的XGrid控件需要从GridView控件派生,这也就说这个新的控件可以在ASP.NET2.0上运行。

下面代码显示了扩展后的的开始部分:

  1. namespace CustomControls  
  2. {  
  3. namespace Grid  
  4. {  
  5. [ToolboxData("〈 {0}:xGrid runat=server〉  
  6. 〈 /{0}:xGrid〉")]  
  7. public partial class xGrid : GridView  

要使用这个控件,只要简单的把它通过VS.NET2005的工具栏直接拖放到Web窗体上即可。具体怎把该控件添加VS.NET2005工具栏上则不是本文讨论的范围。

下面的代码片断显示了它的基本使用

  1. 〈xGrid:xGrid ID="XGrid1" runat="server" 
  2.  AutoGenerateColumns="False" /〉 

单击(Single Row Click)

这是该自定义控件添加的第一个新特性,您现在把鼠标放置到一行数据上然后单击就会引起页面数据的回发,你可能认为使用这个功能实现主/从页面,是的,使用RowClick可以实现这个功能。

相关的属性是:

·EnableRowClick:这个属性可以取值为true/false,默认为false

·MouseOverColor:当EnableRowClick设置为true时,利用该属性设置鼠标移过一行数据显示的结果。单击和双击都使用这个功能。

下图显示了运行结果,在这个运行结果里,显示了单击一行时的效果。

GridView控件

您可以在RowClick事件里处理单击的结果,示意代码如下:

  1. protected void XGrid1_RowClick(object sender,   
  2. RowClickEventArgs e)  
  3. {  
  4. Response.Write("You clicked row: " + e.  
  5. GridViewRow.RowIndex);  

RowClickEventArgs参数默认是从EventArgs 类派生,并增加了一个名称为GridViewRow 的属性,这样您就可以使用该属性获取当前行的索引。

 #p#

行的双击(Double Row Click)

这是扩展ASP.NET GridView控件后添加的第二个功能。您现在只需要在一行上双击就会向服务器产生数据回发来处理请求。您可以通过双击让当前行处于编辑默认。 在行的双击里已经添加了RowDoubleClick事件,您可以使用该事件处理特定的业务逻辑

相关的属性

EnableRowDoubleClick:取值为true或者false,默认值为false

MouseOverColor:当EnableRowDoubleClick设置为true时,可以利用该属性设置鼠标移过行的效果,这个和单击行的效果一样。

下图显示了运行结果

设置鼠标移过行的效果

您可以处理RowDoubleClick 事件,示意代码如下:

  1. protected void XGrid1_RowDoubleClick(object sender,   
  2. RowDoubleClickEventArgs e)  
  3. {  
  4. Response.Write("You double clicked row: " + e.  
  5. GridViewRow.RowIndex);  

RowDoubleClickEventArgs 类时从EventArgs 类派生并添加了GridViewRow 属性,使用该属性可以给你更全的控件

基于行的上下文菜单

我们花费了一个半月左右的事件来研究GridView控件,但是我们发现没有一个GridView控件可以使用ContextMenu,也就是说内置的GridView上下文菜单控件无法使用。

我们不得不使用Dino Esposito开发的context meun,该菜单的开发文档发布在MSDN杂志上,本文后面会在资料文件里列出对该文件的链接。 Dino Esposito开发的Context Menu主要使用ASP.NET1.1技术进行开发,我们已经建立了基于ASP.NET2.0 Context Menu项目,该项目拷贝了他的代码,并进行了简单的更改。其中,一个改变是在Context Menu项目里添加了OnClientClick属性,这样在处理客户端向服务器请求的回发前,开发人员可以将客户端处理事件挂接到上下文菜单里。

Context Menu使用的客户端代码主要是Javascript代码,这里的代码在ASP.NET2.0里已经作为资源(Resource)包括进去了。

Context Menu现在已经是基于ASP.NET2.0的项目了并且已经集成到扩展的GridView控件的每一行,现在当您右击每一行时,您将可以访问右击事件。扩展的GridView控件还有一个新的属性:RightClickRow,该属性可以返回当前行上下文菜单

相关的属性如下:

·GridView控件是具有上下文菜单的,这里的ID设置的就是在ASPX页面上的GridView控件ID

·RightClickedRow:该属性设置上下文菜单。

下图显示了运行结果。

设置上下文菜单

当您在行上单击鼠标右键时弹出Context Menu菜单。这里显示了三个选项:

·Add a new Row:当选择该选项后,将会在记录里出现新建行。

·Delete Row:允许你删除当前右击的行

·Edit Row:运行您设置当前行的模式 为编辑模式

编辑模式

【编辑推荐】

  1. ASP.NET 2.0中的URL映射
  2. ASP.NET 2.0教程 数据源控件解析
  3. ASP.NET页面请求原理浅析
  4. ASP.NET页面静态化四步走
  5. 浅析ASP.NET授权模块
责任编辑:冰荷 来源: 51CTO.com
相关推荐

2009-07-24 15:35:00

ASP.NET Gri

2009-07-20 18:02:48

GridView控件ASP.NET 2.0

2009-08-03 18:29:31

GridView与Da

2009-08-04 13:38:36

ASP.NET用户控件

2012-09-26 09:46:29

ASP.NETWeb框架

2009-08-04 10:43:59

ASP.NET控件开发

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-08-05 15:57:03

ASP.NET控件ID

2009-08-19 13:44:00

ASP.NET Lis

2009-08-17 09:24:25

ASP.NET控件

2009-08-03 15:08:00

SqlDataSour

2009-07-27 17:25:53

ASP.NET验证控件

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-27 16:19:59

ASP.NET报表控件

2009-07-27 10:12:37

GridView和Ob

2009-07-27 16:09:05

GridView显示数

2009-08-14 13:20:29

ASP.NET Gri

2009-07-27 15:58:25

添加GridView

2009-07-27 16:22:54

GridView选择行

2009-07-29 13:32:06

ASP.NET控件使用
点赞
收藏

51CTO技术栈公众号