作者:Scott Mitchell

[概述]

  WEB开发自从有了基于脚本的WEB编程技术(如ASP)以来,经历了一个漫长的过程。通过使用微软的ASP.Net技术,传统的ASP中大量的、单调乏味的、重复性的编程工作成为了历史。例如,象大多数ASP程序员所知的,在ASP中显示数据库内容所需要的过程:

  建立数据库连接

  用SQL查询装载ADO数据集

  显示所需要的任何HTML代码

  遍历数据集中的记录

  输出记录字段值及相关的HTML

  移向下一条记录

  循环

  显示所需要的HTML代码

  又如,为了在表格中显示记录集的内容,我们需要输出一个标签,然后开始循环。在循环中,每输出一条记录,需要先输出一个标签以及若干对标签,最后,以一个标签结尾。

  在传统的ASP中使用的这种方法有一个主要的缺点:HTML代码与ASP源代码不得不纠缠在一起。对于那些也许并不理解程序设计的页面设计者或图形艺术家来说,想要更改HTML内容无疑是一场灾难。另外,代码的产生量也是惊人的,因为我们不仅需要从数据库中取得数据,还需要使之可视化。

  好在,ASP.Net提供了三个数据控件,使得原本在ASP中繁杂的工作变得简单。这三个控件属于数据Web控件,分别是DataGrid,DataList和Repeater。如果你对ASP.Net数据库编程有所了解的话,你至少应该有使用其中一种控件的经验。大多数情况下,我们从学习使用DataGrid开始,因为它的功能相对完整(数据显示、分页、编辑)并相对简单。然而,DataGrid并非总是正确的选择。

  本文将分别论述每个数据控件不同于其它数据控件的特点,以及由此带来的优缺点。正因为每种数据控件都有其自身的缺陷,因此在程序设计中并不存在最完美的选择。你必须权衡三种控件的优缺点并决定哪一种更加适合你的程序。

  为了帮助比较,在对每个控件进行论述时,我们会专注于三个特性:可用性(从页面访问者的角度)、开发时间和性能。我们首先描述一下这三种控件的共性,然后分别深入地讨论三种控件的特点,每种控件如何实现以及如何体现可用性、开发时间和性能。

[数据控件(Data Web Controls)的共同点]

  在我们讨论三种控件各自特性之前,有必要先看一看它们之间的共同点。一般来说,从编程流程来看,最显著的共同点就是,这三种控件都是用来显示数据的。另一个共同点是需要一个数据绑定的代码来将数据与控件绑定。这个过程只需要两行代码:

  dataWebControlID.DataSource = someDataSource

  dataWebControlID.DataBind()

  一般情况下,someDataSource对象是指数据控件的数据源属性,可以是DataSet,SqlDataReader,OleDbDataReader或一组数据(如数组、数组列表或其它的属于System.Collection名空间的类)。不过,任意实现IEnumerable接口的对象也可以被绑定在数据控件上。

  DataBind()方法遍历一个特定的DataSource中的记录,并对其中的每条记录,建立一个条目并对应数据控件的Item集。数据控件中的每个条目将成为一个类的实例。这个类因数据控件的不同而有所区别。例如,DataGrid中的每个条目是DataGridItem类的一个实例,而Repeater中的条目则是RepeaterItem类的一个实例。

  之所以使用不同的类来实例化不同数据控件的条目,是因为不同的数据控件将会使用不同的方式显示数据及相应的HTML代码。例如,DataGridItem类继承自TableRow类,也就是说,每个DataGridItem的实例或多或少地可以看成一个表格中的一行。这是因为DataGrid被设计成可以借助HTML中的 标签以表格的形式显示数据,因此每条记录就是一个表格行。而Repeater则被设计成可以自由定义数据输出的方式。所以,RepeaterItem并不继承自TableRow就不奇怪了。

  另一个三种数据控件的相同点是每种控件都被允许使用模板来显示数据。DataList和Repeater控件必须使用模板来输出数据,而DataGrid则允许通过TemplateColumn而只使用模板来显示一列(在DataGrod单元中详细论述)。

  另一个不是十分值得比较的地方是:DataGrid和DataList都是继承自WebControl类,而Repeater则是继承自Control类。WebControl类包含一些用于美化的属性,如:BackColor、ForeColor、CssClass、BorderStyle等等。这说明在使用DataGrid或DataList时,你可以设定这些属性来个性化输出。Repeater控件则不具有这些属性。我们会在Repeater单元讨论如何使用模板来美化Repeater的输出。

关于何种情况下使用DataGrid、DataList或Repeater的一些讨论(1) ambushaa [翻译] [转]相关推荐

  1. ASP.net:关于何种情况下使用DataGrid、DataList或Repeater

    ASP.net:关于何种情况下使用DataGrid.DataList或Repeater 转自:http://www.sudu.cn/info/html/edu/20071025/318605.html ...

  2. 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论

    作者:Scott Mitchell [概述] WEB开发自从有了基于脚本的WEB编程技术(如ASP)以来,经历了一个漫长的过程.通过使用微软的ASP.Net技术,传统的ASP中大量的.单调乏味的.重复 ...

  3. 2020-12-18(何种情况下编译器会提供默认构造函数)

    当问到大家什么时候会提供默认构造函数时,有的人会不会一下子就想到当我们没有定义构造函数的时候,它就会提供默认的构造函数,但我们想想一个问题,假如没有意义的情况下提供了默认构造函数,那是不是把编译器搞得 ...

  4. oracle user_lobs,何种情况下imp的fromuser/touser改变tablespace失效

    exp/imp是大家在数据库迁移中最常见的工具,但是该工具对于表空间的转换不是很智能(最少没有datapump方便),使得很多人在导入数据的时候,吃够了表空间不存在的苦.这里有个细节:fromuser ...

  5. [转]决定何时使用 DataGrid、DataList 或 Repeater

    摘要:了解 ASP.NET 用于显示数据的三个控件: DataGrid.DataList 和 Repeater. 这些控件中的每一个都有独特的特性以及相关的优点和缺点. 创建显示数据的 ASP.NET ...

  6. 华夏常春藤_我如何在没有常春藤大学学位的情况下从微软,亚马逊和Twitter获取报价

    华夏常春藤 This is for those of you out there who are about to start your job search and who may be worri ...

  7. 华夏常春藤_我如何在没有常春藤大学学位的情况下从微软,亚马逊和Twitter获取报价...

    华夏常春藤 This is for those of you out there who are about to start your job search and who may be worri ...

  8. 在什么情况下要向美国专利商标局申请临时专利?

    首先,我们需要简单了解下是吗是美国的临时申请. 美国临时申请不受审查,是一种更便宜.更简单的应用程序,可让您在进行调整的同时为您的发明申请"专利申请".需要注意的是,临时申请不经过 ...

  9. 决定何时使用 DataGrid、DataList 或 Repeater

    本页内容  简介   数据 Web 控件之间的相似性   研究 DataGrid Web 控件   分析 DataList   深入研究 Repeater   小结   基准设置 简介 自从出现了像  ...

  10. DataGrid/DataList

    很久以前就想写一些关于DataGrid/DataList的东西,但是一直以来,一方面自感所学未深,另一方面,总觉无从下笔,一拖再拖,离刚开始的念头已距一年有余. DataGrid/DataList在A ...

最新文章

  1. 【C++】Google Protocol Buffer(protobuf)详解(二)
  2. c语言进位程序,c语言中如何做带进位位移
  3. xcode4发布测试-打包(Archive)
  4. Nginx错误日志说明
  5. conda创建虚拟环境 和 用conda创建GPU的cuda、cudnn使用环境
  6. Jenkisn之JDK-MVN-ANT-GRADLE
  7. oracle 48小时内_缺血性脑梗死后48小时内使用阿替普酶能够降低脑损伤程度
  8. 用户控件(UserControl)
  9. Visual Studio 2010旗舰版正式版序列号 - civilman的专栏 - 博客频道 - CSDN.NET
  10. hdu 1286找新朋友 (简单数学题)
  11. Struts2 Action与Servlet API耦合
  12. 5.文件操作 --- 系统调用
  13. 堆中的路径(MOOC)
  14. kmean法和dbscan法的直观比较
  15. 夸计算机老师的成语,赞美老师的成语句子
  16. ACL2021_Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter
  17. python八段数码管显示小数点_小数点算法处理(数码管显示)
  18. 没赶上互联网,也没赶上移动互联网,微软到底赶上了什么?
  19. 《Python 深度学习》刷书笔记 Chapter 3 预测房价:回归问题
  20. 了解手机屏幕:VAG、QVAG、HVAG、WVAG

热门文章

  1. NUMA架构的CPU – 你真的用好了么?
  2. Linux系统中cgroup功能介绍
  3. ffmpeg 使用小记
  4. 海康摄像头GB28181对接
  5. linux 内核 内存管理 初始化 页表
  6. attrib批量显示文件夹_CMD中使用attrib命令设置文件只读、隐藏属性详解
  7. 2.1.3 Sorting a Three-Valued Sequence 三值的排序
  8. 给chrome手动安装github上插件
  9. 聪明好学的王强用计算机设计了,五年级语文下册期中试卷1.doc
  10. c语言编程n元一次方程,解n元一次方程