ASP.NET DataGrid 控件深入研究

asp.net|datagrid|控件

首先我们将从一个示范开始,在这个示范中我将使用一个按钮点击事件排序表格中的数据。然后介绍的是一组属性——HyperlinkColumn、BottonColumn 和 BoundColumn,使用这些属性可以为 DataGrid 添加一些有趣的自定义功能。

下面我们首先从上一次结束的地方——清单A开始。下面是清单A中代码的输出。

DataGrid 的输出

要注意的第一个变化是表头中的列名现在是可点击的。自己运行一下这个示例,你会发现在点击每个字段时,数据会自动排序。

现在我们看一下引发这个变化的代码。首先我将介绍 strSortBy 变量,这个变量用于存储排序参数的名字。Page_Load() 函数也已有改动:当页面第一次被装载时,id字段被选作默认的排序参数。

下面创建 DataView 对象的一个实例,用于在运行时期改变排列顺序。只要把这个属性设置为要排序的列,DataView 就会替我们完成排序工作。

最后,使用 DataGird 控件的一些新属性将这些东西粘合到一起。AllowSorting激活排序,而 OnSortCommand属性指定在接收到一个排序请求时需要调用的事件处理器。第二个属性已经设置为dgsuperheroes_Sort(),这个函数将在我们点击头部的字段名时由 .NET 编译器自动调用。在这个函数中,SortExpression属性保存被选作排序参数的字段名,然后根据这个字段重新绑定 DataGrid,从而实现排序。

向 DataGrid 中添加链接

接着,我们可以通过以下方式改进 DataGrid 的界面:只在前面展示信息的摘要,并在 DataGrid 中插入一些超链接,然后在点击这些链接时显示详细信息。清单B 展示了如何实现这一效果,图B 展示了相应的输出:

图B

在 DataGrid 中插入超链接
这里 DataGrid 只包含两列——第一列是 ID,第二列是名字。如果点击任何一个名字,就会调出另外一个 ASP.NET 脚本,显示被选项的所有详细信息。

在这个脚本中最重要的东西是 AutoGenerateColumns 属性。该属性如果设为 false,那么就可以保证 .NET 编译器不会根据表的字段自动产生 DataGrid 的列。

很明显的问题是,然后该怎样生成列?很简单,使用 <Columns> 元素,这一元素将围起需要显示的列的定义。

第一种列是 <asp:BoundColumn> 类型,该类型允许我们将 DataGrid 的一列绑定到数据库表的一个字段。所需的字段被赋予 <asp:BoundColumn> 元素的 DataField属性。

然后,<asp: HyperLinkColumn> 元素允许我们插入一个特殊列,在该列中有 DataGrid 每一行的一个链接。DataTextField属性控制列中要显示的表字段,DataNavigateFormatString属性控制超链接的 URL 目标(注意 {0} 格式用于变量填补),DataNavigateUrlField属性指定用于填补的数据库字段。

如果点击超级英雄(super hero)的名字,会进入 more.aspx 脚本,该脚本以 id 作为一个 GET 参数传递,然后从数据库中获取信息,并将信息显示在页面上。
命令中心
前面的例子引入了一个包含超链接的列。现在,你将看到如何引入一个能够在用户点击时运行自定义命令的列。比如说,当用户点击一个列时,在页面上隐藏或者显示一个元素。

首先,在前面创建的 DataGrid 中添加两个列。第一个新列使用被选记录的详细信息填充另外一个 DataGrid(位于同一页面),而第二个列用于在用户点击一个按钮时显示或隐藏这个新的 DataGrid。

清单C是产生的代码,下图是清单以中代码的简单输出:

图C

使用 DataGrid 显示/隐藏详细信息
脚本中实际上包含两个 DataGrid:第一个是“dgsuperheroes”,用于显示超级英雄(superheroes)的名字,第二个是“dgsuperheroes_details”,用于显示被选英雄的详细信息。默认情况下,第二个 DataGrid 在页面加载时是不可见的,因为其 Visible 属性设置为 false。

现在回到“dgsuperheroes” DataGrid,你会发现我们已经把 AutoGenerateColumns 属性设置为“false”并且引入了四个自定义列:两个用于记录 ID 和名称的 <asp:BoundColumn>,还有两个用于保存命令的 <asp:ButtonColumn>。

每个 <asp:ButtonColumn> 都有三个有用的属性:HeaderText,控制表头行显示的文字;Text,控制每一行显示的文字;CommandName,用于为每个命令指定一个唯一标识符。

“dgsuperheroes” DataGrid定义还引入了 OnItemCommand 属性,这个属性指定在用户点击一个 <asp:ButtonColumn> 链接时被调用的事件处理器。在这个例子中,事件处理器叫做 SuperHero_Details(),它使用 CommandName 区分对“显示详细信息(Show Details)”和“隐藏详细信息(Hide Details)”请求的调用。注意这里显式地将事件(作为事件处理器的一个输入参数)转型为一个 LinkButton。

分享你的 DataGrid 技巧和窍门
在学习完本文的这两部分课程之后,我已经尝试尽量深入地讲解了 ASP.NET 中非常酷的 DataGrid 控件的很多东西。此外还展示了如何使用最简单的方法向 DataGrid 中添加排序列,之后我还快速地介绍了 DataGrid 控件的三个有用但有点复杂的属性:<asp:BoundColumn> 元素,用于将 DataGrid 列绑定到数据库表的具体字段;<asp:HyperLinkCommand> 元素,用于在 DataGrid 中插入超链接;<asp:ButtonColumn> 元素,使得将自定义命令引入到 DataGrid 中更加容易。不妨到Discussion Board 跟大家分享你最爱的 DataGrid 技巧或窍门。

时间: 2024-10-03 07:22:44

ASP.NET DataGrid 控件深入研究的相关文章

Cutting Edge:使用客户端行为扩展ASP.NET DataGrid 控件

asp.net|datagrid|客户端|控件 Cutting Edge:使用客户端行为扩展ASP.NET DataGrid 控件 (可拖动列和客户端排序) 英文原文:Extend the ASP.NET DataGrid with Client-side Behaviors作者:Dino Esposito翻译:MasterLRC源码:CuttingEdge0401.exe 如同比萨饼厨师的擀面杖,DataGrid 控件,对于一个熟练的ASP.NET开发者来说是非常基本而且有用的工具(译者:老外

ASP.NET:DataGrid控件的分页功能

asp.net|datagrid|datagrid控件|分页 DataGrid 控件是一个基于模板样式的.多功能的.多列的数据绑定控件.在三个数据绑定控件中,DataGrid是功能最为强大的,其次时DataList控件,然后是轻量级的数据绑定控件Repeater.要自定义 DataGrid 中各列的布局,您可以将列类型设置为"模板",然后修改列的模板.DataGrid 控件也可以无需模板,只需按照默认的设置即可进行呈现,这使得该控件成了用于报告方案的理想控件.      我们可以把Da

ASP.NET:DataGrid控件的排序功能

asp.net|datagrid|datagrid控件|排序 上一节我们已经知道DataGrid排序功能是由AllowSorting属性控制的,这一小节里,我们将通过实例来验证这个功能.     在DataCon Web项目里,添加一个窗体,命名为DataGrid_Sample4.aspx,添加一个DataGrid控件,DataGrid_Sample4.aspx的主要HTML代码如下:<body MS_POSITIONING="GridLayout"><form id

ASP.NET:DataGrid控件的编辑功能

asp.net|datagrid|datagrid控件 在ASP技术作Web编程的时候,因为对数据库的操作使用的RecordSet对象,如果不使用第三方控件,想要做到在线编辑数据就很困难.而DataGrid控件就支持了在线编辑的功能,只要把EditCommandColumn属性设置适当,稍加编程就可以实现了. DataGrid控件的EditItemIndex属性表示编辑按钮的类别,ASP.NET默认的EditItemIndex=-1,即不支持编辑属性.下面我们通过实例来学习一下.     在Da

ASP.NET:优化DataGrid控件的编辑功能

asp.net|datagrid|datagrid控件|优化 尽管在上面的实例中我们已经实现了DataGrid的在线编辑功能,但是,如果我们已经习惯了C/S 结构的程序,就会感觉到上个实例中编辑的不足:提交数据频繁,加重了服务器的负担.在这一节中,我们利用一个实例来演示优化后的DataGrid控件的编辑功能,其中的技术就是引入批量更新数据.引入的一个新知识就是控件的FindControl方法.     我们来看具体实例.首先在DataCon Web项目里,添加一个Web Form,命名为Data

ASP.NET技巧:將datagrid控件內容輸出到excel文件

asp.net|datagrid|datagrid控件|excel|技巧 一個將datagrid控件內容輸出到excel文件的demo. 生成EXCEL文件#region 生成EXCEL文件public void setToExcel(){//            Response.Clear(); //            Response.Buffer= true; //            Response.Charset="utf-8";         if (efor

使用 ASP+ DataGrid 控件来创建主视图/详细资料视图

asp+|datagrid|创建|控件|视图 简介 Microsoft Visual Studio.NET 的下一发行版包括 DataGrid Web 控件 (作为服务器控件的 Active Server Page+ (ASP+) 套件的一部分). 该控件提供用以根据数据源的内容来表示 HTML 的功能. DataGrid 控件可以用于若干个只读汇报情形.该控件设计用于对丰富而完全可定制的数据表格布局的输出进行简化.还提供多个机制,用于通过超级链接及其对选择.排序.分页和原地编辑和其它特性的支持

使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)

asp+|datagrid|创建|控件|视图 Step6Page.cs: namespace Samples { ... public class Step6Page : Page { // 更新当前选定的作者并重新加载与选定内容对应的书名 // 网格 protected void LoadTitlesGrid() { UpdateSelection(); titlesGrid.DataBind(); } // 处理书名网格中的 CancelCommand 事件,以 // 不施用更改就结束编辑

ASP.NET中DataGrid控件应用技巧简述

asp.net|datagrid|datagrid控件|技巧 一.概述: 运用ASP.NET开发Web应用程序过程中,DataGrid是一个非常重要的控件,几乎任何和数据相关的表现都要用到该控件.所以熟练掌握DataGrid控件的应用技巧是每个Web开发人员所必备的基本能力. DataGrid控件能以表格的方式显示数据源中的数据,并提供了诸如分页.排序以及过滤等一些强大的内置功能,所以它能大大简化Web应用程序的开发过程.同时,开发者还可以通过运用各种不同的数据绑定列来自定义DataGrid控件