小议ASP.NET数据Web控件之间的异同

开发 后端
本文对三个主要的ASP.NET数据Web控件,即DataGrid、DataList和Repeater的异同之处做了一些研究。三个控件都是用于显示数据的。

ASP.NET数据Web控件也就是DataGrid、DataList和Repeater。研究差异之前首先要了解相似性。从较高级别观点来看,最基本的相似性是,DataGrid、DataList 和 Repeater都设计为了执行大致相同的操作: 显示数据。 另一个相似性把数据绑定到数据 Web 控件所需的代码。 具体地说,只需要下面两行代码:

  1. dataWebControlID.DataSource = someDataSource  
  2. dataWebControlID.DataBind()  

通常,赋给ASP.NET数据Web控件的

DataSource

属性的

someDataSource

对象是一个 DataSet、SqlDataReader、OleDbDataReader 或一个集合(如 Array、ArrayList 或

System.Collections

命名空间中的其他某个类)。 但是,任何实现 IEnumerable 接口的对象都可以绑定到数据 Web 控件。

DataBind()

方法枚举指定的

DataSource

中的记录。 对于

DataSource

中的每一条记录,都会创建一个项并追加到数据 Web 控件的

Items

集合中。 数据 Web 控件中的每一项都是一个类实例。 用于控件每一项的特定类取决于该数据 Web 控件。 例如,DataGrid 中的每一项都是

DataGridItem

类的一个实例,而 Repeater 中的每一项都是

RepeaterItem

类的一个实例。

每个数据 Web 控件会为它的每一项使用不同的类,因为是这些项呈现的方式决定了数据 Web 控件生成的 HTML 标记。 例如,DataGridItem 类是从

TableRow

类中派生的,这意味着每个

DataGridItem

都或多或少地呈现为一个表行。 这很有意义,因为 DataGrid 设计为在 HTML

< table>

标记内以表格形式显示数据,在 HTML

< table>

中,每一项都呈现为单独一行。 另一方面,Repeater 设计为允许对它的输出进行完全自定义。 因此,RepeaterItem 类不从

TableRow

类中派生并不令人惊讶。

ASP.NET数据Web控件之间的另一个相似性是每个控件都能使用模板提供高度自定义的输出。 DataList 和 Repeater 控件必须 使用模板指定它们的内容,而 DataGrid 则通过 TemplateColumn 列类型可以为特定的列选择使用模板(我们将在下一节“研究 DataGrid Web 控件”中讨论各种不同的 DataGrid 列类型)。

最后一个值得注意的是 DataGrid 和 DataList 控件是从

WebControl

类中派生的,而 Repeater 控件是从

Control

类中派生的。

WebControl

类包含许多美学方面的属性,例如

BackColor

ForeColor

CssClass

BorderStyle

等。 这意味着如果使用 DataGrid 和 DataList,就可以通过它们从

WebControl

类中继承的属性指定样式设置。 而 Repeater 没有任何这样的样式属性。

ASP.NET数据Web控件的区别与选择

在 ASP.NET Web 页面中显示数据时,很多开发人员都选择他们最熟悉的数据 Web 控件,通常是 DataGrid。 但是这样的盲目决定不够明智,因为根本没有通用的“最好的”数据 Web 控件。 决定为给定的 Web 页使用哪个数据 Web 控件时,应该先就以下各种问题自己考虑一下,以确定哪个控件最适合手边的任务。 您想允许用户对数据进行排序吗? 需要把数据用非 HTML

< table>

的格式显示吗? 页面会被大量访问吗,因而性能是一个关键的问题吗?

因为 DataGrid 能允许最终用户排序、分页和编辑它的数据,所以这三个数据 Web 控件中 DataGrid Web 控件提供了最好的功能集。 因为使用 DataGrid 时只需要把它添加到 Web 页面中并写几行代码,所以 DataGrid 也是最简单易用的数据 Web 控件。 但是,容易使用和强大的功能是要付出代价的,如性能的代价: DataGrid 是三个数据 Web 控件中效率最低的,特别是当把它放置在 Web 窗体中时。

通过使用模板,DataList 对显示的数据外观提供了比 DataGrid 更多的控制。 但是,使用模板通常比使用 DataGrid 的列类型需要更多的开发时间 DataList 还支持数据的内联编辑,但是实现起来需要的工作量比 DataGrid 多。 遗憾的是,在 DataList 中提供分页和排序支持不是一件简单的事。 DataList 比 DataGrid 提供了更好的性能,从而弥补了这些缺少的内置功能。

最后,Repeater 控件允许对呈现的 HTML 标记进行完整和全面的控制。 对于 Repeater,生成的唯一 HTML 是模板中数据绑定语句的值和模板中指定的 HTML 标记,而不会生成象 DataGrid 和 DataList 那样的“额外”HTML。 由于要求开发人员指定完整生成的 HTML 标记,所以通常 Repeater 需要的开发时间最长。 而且,Repeater 不提供内置编辑、排序或分页支持。 但是,Repeater 的性能确实是这三个数据 Web 控件中最好的。 它的性能可与 DataList 相比,但明显比 DataGrid 好。

【编辑推荐】

  1. 从传统ASP到ASP.NET的转变:了解控件
  2. ASP.NET调试API之Log4net使用指南
  3. 使用ASP.NET模板生成HTML静态页面的五种方案
  4. ASP.NET Login控件使用方法及须知
  5. 什么是ASP.NET MVC,以及其优点概览
责任编辑:yangsai 来源: MSDN
相关推荐

2009-08-03 15:43:22

asp.net控件

2009-08-07 17:41:07

ASP.NET Web

2009-07-30 12:42:19

html控件和web控

2009-10-09 10:52:43

ASP.NET模板引擎

2009-07-27 13:52:36

Panel控件ASP.NET

2009-08-17 10:16:26

ASP.NET的WEB

2009-07-28 14:22:05

数据源控件ASP.NET

2012-09-26 09:46:29

ASP.NETWeb框架

2009-07-24 17:15:52

SiteMapData

2009-08-04 15:20:59

ASP.NET数据验证数据验证控件

2009-08-07 15:34:15

ASP.NET数据绑定

2009-07-24 15:35:00

ASP.NET Gri

2009-08-04 11:29:14

HTML代码ASP.NET控件

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-27 17:25:53

ASP.NET验证控件

2009-08-17 09:24:25

ASP.NET控件

2009-08-03 15:08:00

SqlDataSour

2009-07-27 16:19:59

ASP.NET报表控件

2009-08-04 10:43:59

ASP.NET控件开发
点赞
收藏

51CTO技术栈公众号