对ASP.Net中三个数据控件DataGrid,DataList和Repeater的比较
ASP.Net提供了三个数据控件,使得在ASP中繁杂的工作变得简单。这三个控件属于数据Web控件,分别是DataGrid,DataList和Repeater。本文将分别论述每个数据控件不同于其它数据控件的特点,以及由此带来的优缺点。
一、三种数据控件的共同点
三种控件都是用来显示数据的,同时都需要一个数据绑定的代码来将数据与控件绑定。这个过程只需要两行代码:
dataWebControlID.DataSource=someDataSource
dataWebControlID.DataBind( )
另外,每种控件都被允许使用模板来显示数据。DataList和Repeater控件必须使用模板来输出数据,而DataGrid则允许通过TemplateColumn而只使用模板来显示一列。
二、DataGrid控件
DataGrid的功能最丰富,但也是最不灵活的控件。这是因为它最初就是被设计成以表格的形式输出数据:每一条记录输出时会建立一对标签,而每个字段的值输出时则建立一对标签。
DataGrid含有几个属性可以提高其可用性,如通过设置DataGrid的AllowSorting属性为true,并加入少量代码,DataGrid就具备了按不同字段排序的功能。此外,设定相关属性来实现分页以及单条记录编辑的功能更加增强了DataGrid的可用性。
除了在可用性方面的支持以外,DataGrid同时也相当节省开发时间。使用DataGrid在WEB页面上显示数据只需要两行代码。一行用来设定与DataGrid绑定的数据源(DataSource),另一条则用来执行绑定命令(DataBind())。当然,在Repeater中实现这样的功能并非不可能,只是,相比使用DataGrid而言,需要花费更多的时间和精力来实现。
尽管DataGrid有这样那样令人印象深刻的优点,它的两个缺点也同样不能忽视。首先,如前所述,DataGrid在个性化输出数据方面功能有限。当然,你可以定制字体、颜以及线条宽度等等,但它始终只能是HTML表格。
尽管DataGrid具有许多增强可用性的属性,却仍然显得死板而不够灵活。这是因为,不论什么
样的属性,都需要对DataGrid所生成的表格进行相关的设置而生效。这无疑会使表格变得臃肿而失去灵活性。例如,DataGridColumn的设置会对表格的每一行的相应列生效。DataGrid的这种局限性阻碍了更有创意地显示数据。比如,希望每五条记录被显示在一行,或根本不想要表格来显示数据,将不得不放弃使用DataGrid。
三、DataList控件
DataList放弃了DataGrid中列表显示数据的概念,而是使用事先定义好的模板(Template)来定制显示。通过使用模板,可以同时使用HTML标签或数据绑定。这里的数据绑定的形式为:,用来显示数据源中给定条目的数据记录。
默认情况下DataList会将记录显示在HTML表格中。然而,通過设定RepeatColumn属性,可以设置在一行中显示多少条记录。甚至可以指定DatList的内容不显示在表格中,而是标签中。这可以通过设定RepearLayout属性来实现。
asp数据通过模板、RepeatColumn和RepeatLayout属性,DataList在定制数据输出样式方面较DataGrid更具灵活性,使得用户界面设计可以更加友好。
通过EditItemIndex模板和EditCommand,UpdateCommand以及CancelCommand事件,DataList将支持记录编辑的功能。不过,比较DataGrid而言,这需要耗费更多的开发时间来实现。这种开发时间上的不一致主要有两个原因:
编辑/更新/删除按钮在DataGrid中可以通过设定EditCommandColumn来自动添加;而在DataList中则需要手动添加。
DataGrid的BoundColumn列样式自动使用文本框控件来显示记录编辑界面。而在DataList中,必须通过EditItemTemplate明确地指定使用什么样的编辑界面。
实现DataList中的分页、排序功能同记录编辑功能情况一样,并不算非常复杂。这些功能可以通过巧妙的编程加以实现,只是耗费一些开发时间。所以,如果需要用户对数据记录进行排序或编辑的话,使用DataGrid要比使用DataList方便得多。
四、Repeater控件
Repeater控件是三种数据控件中在HTML输出方面最为灵活的控件。Repeater会按照所要求的样式严格地输出数据记录。所以,如果不想以表格方式或者简单的输出数据,那么最好使用R
epeater。
与DataList一样,Repeater使用模板来指定输出样式。
Repeater类不是继承自WebControl类的,这一点与DataGrid和DataList不同。所以,Repeater没有样式方面的属性可供设定。也就是说,如果想格式化输出Repeater的数据记录,必须使用HTML标签来设定样式。而如果使用DataGrid或DataList,只要通过设定ItemStyle-Font-Bold属性为True即可实现。
Repeater在格式化设定上的欠缺,直接反映到开发时间的延长上来。对输出数据样式上的越多要求,就越会导致开发周期的延长。这些在模板中规定样式的HTML标签也越发的显得混乱,而且,在将来页面更改时会更加困难,特别是当一个新的开发人员接替工作时。而使用DataGrid或DataList你尽可以只设定样式属性,而不使用模板。而且,如果使用Visual Studio.Net或ASP.Net Web Matrix工作时,这些属性更可以被直接设定而无需编码。
因为Repeater开发时间的延长,其在内建功能(分页、排序及编辑)上的支持也显得不足。因此在可用性方面,Repeater有着明显的缺陷。当然,如果用户对于如何显示数据无所谓的话,这也
算不了什么大问题。我之所以强调这个“如果”,是因为尽管用户有时在设计时并不要求能够分页、排序或编辑记录,但这样的要求往往会在开发后期,或在他们能看到显示出来的记录后产生。
五、结论
在ASP.Net页面上显示数据时,多数的程序员会选择他们所熟悉的控件来使用,特别是DataGrid。然而,这样盲目的选择在没有“最好的通用控件”的情况下是不明智的。
DataGrid提供了最多的功能,如允许访问者对记录编辑、排序或分页。同时它也是最容易使用的,甚至于简单到只需要将之添加到页面中而不必额外编写代码。不过这些易用性是以性能的损失为代价的。DataGrid在三种控件中是效率最低的,特别是在使用Web Form的情况下。
通过使用模板,DataList提供了比DataGrid更加优秀的界面效果。不过这需要以牺牲一定的开发时间为代价。为了添加排序、分页和编辑功能,程序员不得不花费比使用DataGrid更多的精力来进行编码,虽然它的性能要优于DataGrid。
最后,Repeater允许对数据记录作最大限度的HTML定制。通常,使用Repeater来显示数据记
录比使用DataGrid和DataList要耗费更长的开发时间。另外,它不支持内建的编辑、排序和分页功能。所幸的是,Repeater在性能上要优于其它两种控件,特别是明显优于DataGrid。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论