当前位置: 传客网 > ASP.NET之DataGrid 控件深入研究

ASP.NET之DataGrid 控件深入研究

2017-01-11 作者:华仔103

对 DataGrid 进行排序
 

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

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

控件深入研究" title="ASP.NET之DataGrid 控件深入研究" />
DataGrid 的输出

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

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

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

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

向 DataGrid 中添加链接

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

图B 控件深入研究" title="ASP.NET之DataGrid 控件深入研究" />

在 DataGrid 中插入超链接

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

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

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

第一种列是 <asp:BoundColumn> 类型,该类型允许我们将 DataGrid 的一列绑定到数据库表的一个字段。

所需的字段被赋予 <asp:BoundColumn> 元素的 DataField属性。

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

如果点击超级英雄(super hero)的名字,会进入 more.aspx 脚本,该脚本以 id 作为一个 GET 参数传递,然后从数据库中获取信息,并将信息显示在页面上。

前面的例子引入了一个包含超链接的列。现在,你将看到如何引入一个能够在用户点击时运行自定义命令的列。比如说,当用户点击一个列时,在页面上隐藏或者显示一个元素。

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

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

图C
控件深入研究" title="ASP.NET之DataGrid 控件深入研究" />

使用 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。



相关推荐

  • 深入研究主力操作中不可避免的技术弱点

    主力影响股价的涨跌手段是多种多样的,这其中关键因素是资金实力与题材策划,但最终都会落实到价量关系上。这种情况对于资深分析师来讲是有迹可循,有机可乘的。深入研究主力操作中不可避免的技术弱点也是中小投资者提高投资水平的关键。一、主力的选股弱点利

  • 《我校学困生形成的原因及其转化措施的研究》 课题深入研究阶段实施方案-郑润琴

    《我校学困生形成的原因及其转化措施的研究》课题深入研究阶段实施方案郑润琴一、背景说明《我校学困生形成的原因及其转化措施的研究》课题组经过准备阶段和前一阶段的努力工作,我们已取得较大的成果,课题组老师认真制作问卷调查的内容,并按年级、分阶段对

  • [转贴]深入研究Windows 7中的Virtual Hard 

    深入研究Windows7中的VirtualHardDisk(VHD)技术发表了Windows7对VHD文件的内建支持和从VHD文件启动计算机这两篇博客后,陆续收到不少技术爱好者的电子邮件询问这些功能的细节、技术实现和应用场景。在做了一些功课

  • Java 反射机制深入研究

    Java反射机制深入研究Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态

  • 怎样深入研究一家公司 安得烈 2560战法

    怎样深入研究一家公司(作者:杰尽所能)一、基本原则1、保守谨慎保守谨慎要求我们不要动不动就满仓,甚至满仓还嫌不够还加融资。保守谨慎也要求我们尽量不要对单一个股持仓过重,我自己在这方面吃过大亏,所以通常要求对单一个股持仓比例要低于30%。沃伦

  • 转载:CSS float浮动的深入研究、详解及拓展(三)

    本文其实真实题目应该是“CSSfloat浮动的深入研究、详解及拓展(三)”,但是为了更显著的体现本文的核心内容,顺便搞点噱头吸引眼球,同时跟百哥和谷妹玩点小暧昧,就改成了现在这个样子了。一、一抹前言没有爱的日子,时间如指尖细沙,不知不觉就流

  • 双线数据中心的深入研究与探讨!

    双线数据中心的深入研究与探讨1、双线数据中心的起源早在多年前中国加入世贸组织的当天,国务院批准了信产部对原中国电信的拆分方案,将北方10个省市划归现在的中国网通,南方21省市仍属于原中国电信,即后来所说的“南电信,北网通”,目前的电信和网通

  • 哈尔滨网站制作之互联网深入研究

    我们哈尔滨网站制作凭借多年对互联网技术的深入研究、对中国互联网的现状和发展趋势的把握以及在网站推广服务方面的成熟经验,能够为企业提供最专业、最有效、最经济的网站推广服务。我们哈尔滨网站制作设计重心转向以客户为中心,围绕客户的需求层面有针对性

  • 【转】315M无线模块数据传输——深入研究

    315M无线模块数据传输——深入研究原文地址:http://blog.163.com/isme00174@126/blog/static/164189430201132654458301/实验一:链路层协议(友情提醒:如果你没有过通信调试的

  • JAVA深入研究——Method的Invoke方法

    JAVA深入研究——Method的Invoke方法。  在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还

  • 淘宝动态评分面对AI 碾压性的计算力,人类是否还有深入研究围棋等对弈游戏的必要?

    按:作者高飞龙,北大研究生毕业,围棋业余5段,本文更新于作者知乎。渴求真理的好奇心,是人类前进的永恒驱动力。而宇宙的广袤及世界的庞大,又是人的想象力和行动力所难以企及的。还记得那个流传了数千年的故事吗?​印度的某位国王要奖赏国际

  • 深入研究Java虚拟机的类加载机制

    可能很多朋友都认为Java虚拟机的类加载机制应该就是ClassLoader,作者在学习《深入理解Java虚拟机》这本书时,对Java虚拟机的类加载机制有了更深入的了解,ClassLoader其实只是Java虚拟机加载机制中的一部分。详细请看

  • Java反射机制深入研究

      Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。  在Java运行时环境中,对无弹窗小说于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类

  • 深入研究Windows 7中的Virtual Hard Disk (VHD) 技术

    发表了Windows7对VHD文件的内建支持和从VHD文件启动计算机这两篇博客后,陆续收到不少技术爱好者的电子邮件询问这些功能的细节、技术实现和应用场景。在做了一些功课之后,我整理汇总了这篇文章,详细全面的讨论一下Windows7中VHD文

  • Java 反射机制深入研究

    转载自:http://lavasoft.blog.51cto.com/62575/43218Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法

  • 深入研究Windows 7系统中的VHD技术

    绝大多数人最初接触VHD格式的文件,是在使用VirtualPC或者VirtualServer时,VHD是以文件形式存在的虚拟机的磁盘。微软在2005年公开了VHD格式文件的全部细节,可以从微软的TechNet网站下载VirtualHardD

  • 托管注入深入研究

    http://topic.csdn.net/u/20081209/08/23fb895c-373c-4804-928d-4bba0b3ffc70.html作者:ssyfzy(十三亿分之一的缩写)前言:本文的重点不在于介绍如何注入托管代码,而

  • 关于宽带光纤接入网系统技术深入研究

    光接入网(OAN)从技术上可分为两大类:有源光网络(AON)和无源光网络(PON)。AON又可分为基于SDH的AON和基于PDH的AON。PON又可分为基于ATM的PON(APON)以及基于以太网的PON(EPON)。1 宽带OAN系统1、

  • 深入研究java.lang.System类

    一、概述:System类是一个抽象类,所有的字段和方法都是静态的。其中包含一些有用的类字段和方法,它不能被实例化。在System类提供的设施中,有三个静态的变量in、out、err,分别对应标准输入、标准输出和错误输出流;有对外部定义的属性

  • 深入研究Asp.net页面的生命周期(1)

    介绍Asp.net是微软.Net战略的一个组成部分。它相对以前的Asp有了很大的发展,引入了许多的新机制。本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好、更灵活地操纵Asp.net的作用。当一个获取网页的请

返回
顶部