至顶网(ZDNet.com.cn)-中国最大的企业级IT资源门户-技术成就商务
首页
网络
安全
存储
服务器
软件
桌面
产品库
开发
CIO
白皮书
管理软件
新闻
下载
社区
专家博客
视频
CNETNews
中小企业
网站联盟
开发者在线 http://www.builder.com.cn/
开发者社区
首页
C/S开发
数据库
中间件
Web
嵌入式
项目管理
网页设计
社区
搜索
《博客三人行》
《软话连篇》
《边看边读》
《至顶大课堂》
站点导航:
开发者在线 Builder.com.cn
编程
[冷枫]ASP.Net2.0 数据绑定控件的优越性在哪里?
[冷枫]ASP.Net2.0 数据绑定控件的优越性在哪里?
开发者在线 Builder.com.cn
更新时间:
2007-09-22
作者:
冷枫
来源:CSDN
本文关键词:
冷枫
ASP.NET
数据绑定
控件
优越性
尽管有丰富、功能强大的编程接口,ASP.NET 1.x DataGrid 控件仍需要编写大量自定义代码来处理普通操作,如分页、排序、编辑和删除数据。例如,当用户单击以保存或取消更改时,DataGrid 控件能够引发事件但不提供更多的功能。如果要将更改存储到持续媒介(如一个数据库)之中,则必须自己处理 UpdateCommand 事件,检索更改后的值,编写一条 SQL 命令,然后从该处提交更新。
DataGrid 控件限制普通数据操作的引发事件,因为它是一个数据源不可知的控件,能够绑定到任何可枚举的数据对象。执行数据操作(如更新或删除)需要直接连接到一个特定的数据源。在 ASP.NET 1.x 中,则通过编写特定于应用程序的 ADO.NET 代码解决这个问题的。
ASP.NET 2.0 改进了数据绑定体系结构,引入了新的系列组件(数据源对象)作为数据绑定控件与 ADO.NET 对象之间的桥梁。这些源对象提升了一个略为不同的编程模型,提供了新功能和新成员。您的 ASP.NET 2.0 应用程序应该使用最新的网格控件 — GridView,显示数据报告。与之相似的 DataGrid 控件仍然支持,但 DataGrid 不能充分利用数据源组件的特定功能。
GridView 控件是 DataGrid 的接替者,并从几个方面扩展了后者的功能。首先,它完全支持数据源组件,能够自动处理诸如分页、排序和编辑等数据操作,前提是绑定的数据源对象支持这些操作。另外,GridView 控件有一些比 DataGrid 优越的功能上的改进。特别是,它支持多个主键字段,公开了一些用户界面的改进功能和一个处理与取消事件的新模型。
GridView 附带了一对互补的视图控件:DetailsView 和 FormView。通过这些控件的组合,您能够轻松地建立主/详细视图,而只需少量代码,有时根本不需要代码。
GridView 与 DataGrid
ASP.NET 2.0 中数据绑定控件的类层次结构比 ASP.NET 1.x 中的更一致。在 2.0 版本中,所有控件无论有什么样的实际实现过程和用户界面特点,均从同一个基类(BaseDataBoundControl 类)派生。图 1 显示新的类关系图。DataGrid 和其他 1.x 版本的控件(如 Repeater 和 DataList)没有包含在该关系图中。这些现有控件的继承树与 ASP.NET 1.x 的相同。特别是,Repeater 继承了 WebControl,而 DataList 和 DataGrid 继承了 BaseDataList。如图 1 所示,GridView 是一个复合数据绑定控件,它与其他所有数据绑定控件(包括 DropDownList、DetailsView 和 ListBox)共享一组方法和属性。
图 1 ASP.NET 类关系图
GridView 和 DataGrid 控件的高级功能相似,但基础却不同。GridView 尽可能地保留了 DataGrid 的对象模型,以便轻松地从现有页面进行移植。但是,基于 DataGrid 的代码与新的基于 GridView 的代码不可能 100% 兼容。
DataGrid 与 GridView 控件的另一个主要差异在于自适应用户界面。与 1.x 版本的 DataGrid 不同的是,GridView 也能在移动设备上显示。换句话说,您能够使用相同的用于桌面页面的网格控件在移动设备上生成报告。2.0 版本的 DataGrid 也能自适应地显示,但是它的 UI 功能没有 GridView 丰富。
在 ASP.NET 2.0 中,改进后的 DataGrid 控件支持诸如主题和个性化等通用的控件功能。此外,新的 DataGrid 控件可由一个数据源控件填充。但要记住,绑定到数据源对象的 DataGrid 只能用于读取数据。要实际修改底层数据源,仍然需要一些用户定义的代码。而 GridView 控件可以利用底层数据源的功能并自动删除或更新记录。注意,GridView 控件也支持传统的基于 DataSource 属性和 DataBind 方法的绑定机制。尽管完全支持这种绑定机制,但是不鼓励使用这样的编程实践方法。
GridView 和数据源控件
那么,数据源控件是什么?我在 2004 年 6 月一期的 MSDN®Magazine 中详细介绍了 ASP.NET 2.0 的这项流行的新功能。简言之,一个数据源控件就是一组 Microsoft® .NET Framework 类,它有利于数据存储和数据绑定控件之间的双向绑定。现有的控件(如 DataGrid)以及新的数据绑定控件(如 GridView),尽管绑定能力不同,但都能绑定到一个数据源。
一个数据源控件代表了数据源的主要功能:选择、插入、更新和删除。数据源控件能代表任何数据源:从关系数据源库到 XML 文件,从流数据到业务对象。如果简要介绍能让您想起 .NET 的托管提供程序,请参见图 2。
图 2 数据源控件、GridView 和数据源
数据源控件可以位于一些 .NET 数据提供程序的上层,在数据绑定控件和数据源之间形成一个中间层。数据源控件也会公开一个提供基本操作的公共接口。一些数据绑定控件 — 特别是 GridView 控件,将这些命令与其他与数据有关的操作一起,绑定到适当的自动编辑。
数据源控件通过其属性和方法,将绑定内容以一组命名的视图形式公开。IDataSource 接口提供从数据源检索数据视图的基本功能集,所有数据源控件都实现了这个接口。ASP.NET 2.0 提供一些内置数据源控件,如图 3 所列。图 3列出的数据源控件属于两类:列表和分层组件。SiteMapDataSource 和 XmlDataSource 组件是分层数据源控件,用于像 TreeView 和 Menu 控件这样的分层组件。其他各种组件用于管理列表数据。
图 4 中的代码说明如何在一个示例页面上将 GridView 和 DataGrid 绑定到同一个数据源控件。在 ASP.NET 2.0 中,这是推荐的数据绑定方法。SqlDataSource 控件的特点是一个 ConnectionString 属性加上 SelectCommand、UpdateCommand、InsertCommand 和 DeleteCommand 属性的任意组合。所有属性都是字符串形式,并且引用带有可选参数的命令文本:
<asp:SqlDataSource runat="server"
ID="MySource"
ConnectionString="SERVER=(local);
DATABASE=northwind;Integrated Security=SSPI;"
SelectCommand="SELECT * FROM employees WHERE employeeid > @MinID">
<SelectParameters>
<asp:ControlParameter Name="MinID"
ControlId="EmpID"
PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
每个数据源控件由唯一的 ID 表示。ID 是连结数据绑定控件和数据源控件之间的纽带。通过 DataSourceId 属性将 GridView 绑定到一个数据源控件。例如,每当网格需要获取数据时,就执行与 SQLDataSource 控件相关联的 SelectCommand SQL 命令。当网格需要更新或删除一条记录时,就执行相应的 UpdateCommand 或 DeleteCommand SQL 命令。如果不存在这样的命令,则引发一个异常。在内部,当用户删除或更新一条记录时,GridView 就像 1.x 版本的 DataGrid 一样引发事件。但是与 DataGrid 不同的是,GridView 为这些事件定义内部的处理程序。默认的处理程序检索绑定数据源定义的命令来处理和执行这些操作。图 4说明,在保持网格显示或更新数据的标记后无需编写代码。在更复杂的情况下,您可能需要编写一些代码。
图 5 GridView 和 DataGrid
数据源控件和 GridView 控件通常用于无代码数据绑定。图 5 显示图 4的代码生成的输出结果。
在 ASP.NET 2.0 中,除了 DataSource 和 DataMember,DataGrid 还公开了 DataSourceId 属性。DataSourceId 属性将 DataGrid 连接到同一页面上定义的一个合法数据源对象。但是,DataGrid 不提供与 GridView 同一级别的自动化操作。当用户单击以更新一条记录时,DataGrid 引发 UpdateCommand 事件,而 GridView 除了引发 Updating 和 Updated 事件外,还检索和执行数据源更新命令,允许用户自定义发送到数据源控件的信息。
下一页>>
推荐阅读与
冷枫
ASP.NET
数据绑定
控件
优越性
相关开发者在线内容
冷枫 ASP.NET 数据绑定 控件 优越性相关资讯
.NET Web产品(ASP.NET, Silverlight,
冷枫 ASP.NET 数据绑定 控件 优越性相关技术文章
asp.net利用RAR实现文件压缩解压缩
ASP.NET 3.5 Extensions带来什么
用WinXP的Regsvr32命令控制系统控件
用WinXP的Regsvr32命令控制系统控件
asp.net 实现购物车详细代码
ASP.NET 2.0中控件的简单异步回调
ASP.NET里的支架:Dynamic Data Suppo
ASP.NET备份恢复SQL Server数据库
ASP.NET 2.0的URL映射的实现方法
用户评论
评论列表
发表评论
用户名
评论内容
用户名:
邮件地址:
BBS讨论
ASP怎样显示记录集中的某一记录
出现这种错误提示是为什么???就
这段代码明明是对的啊,怎么说有错
数据透视表相加如何操作
问两道 sql题
新建的SQL数据库怎么设置登陆名和密
phpcms discuz
这个连接查询怎么做?
什么叫做唯一约束?我理解的对吗?
SET sql_mode='' 什么意思
更多最新文章?
热门栏目推荐
C/S开发
数据库开发
WEB开发
移动嵌入式
项目管理
网页设计
新品快看
技术英雄
技术看板
图片故事
热门软件技术推荐
XML
C/C++
C#
Java
Oracle
Mysql
.Net
VB.NET
CSS
SQL
database
UNIX
Linux
Jsp
PHP
Perl
JavaScript
ColdFusion
ASP/ASP.NET
Apache
AJAX
开发者在线
冷枫
最新报道
怎样用VS2005进行三层结构应用程序的开发
[冷枫]用OTA下载本机J2me程序至手机
[冷枫]J2ME中两种Http连接方式Post&Get的比较
[冷枫]J2ME开发中的按键事件
[冷枫]MIDP2.0声音用法
[冷枫]在无线J2ME设备上实现超文本传输协议
[冷枫]自己收藏的HelloWorld
[冷枫]J2me多线程
[冷枫]ASP数据库简单操作教程
[冷枫]J2EE架构的6个最佳实践
开发者在线
ASP.NET
最新报道
asp.net利用RAR实现文件压缩解压缩
ASP.NET 3.5 Extensions带来什么
asp.net 实现购物车详细代码
ASP.NET里的支架:Dynamic Data Support
为什么会出现ASP.NET平台下的MVC框架?
ASP.NET备份恢复SQL Server数据库
.NET Web产品(ASP.NET, Silverlight, IIS7)路线图
ASP.NET 2.0的URL映射的实现方法
Asp.net中防止用户多次登录的方法
利用 ASP.NET 的内置功能抵御 Web 攻击
开发者在线
数据绑定
最新报道
在ASP.NET 2.0中数据绑定的实现方法
Visual C#中的数据绑定
用C#和ADO.NET建立一个数据绑定网格
VB.NET中层次数据绑定TreeView的实现
数据绑定 DataBind
ASP.NET2.0 数据绑定函数Eval()的机制
ASP.NET 2.0中实现模板中的数据绑定
ASP.NET 2.0高级数据处理之数据绑定
从XML到Java代码的数据绑定之创建类(1)
利用数据绑定和模板创建Atlas应用程序
开发者在线
控件
最新报道
用WinXP的Regsvr32命令控制系统控件
用WinXP的Regsvr32命令控制系统控件
ASP.NET 2.0中控件的简单异步回调
开源SWING控件
利用VS.NET为PDA应用程序创建饼图控件
用C#创建PDA应用程序的柱形图控件
在WPF中自定义控件 CustomControl
ASP.Net中保护自定义的服务器控件
Visual Basic的Data控件的主要属性
ASP.NET中Popup控件的使用方法
用户评论