新闻动态   News
搜索   Search
你的位置:首页 > 新闻动态 > 技术文档

asp.net总结之Repeater,DataList和DataGrid

2013/8/22 15:23:58      点击:

 从项目开始到结束纯的用在此项目的时间为半个月的时间,其中将视频中讲到的大例子做了一遍,过程还

是很可贵的,在这个视频中主要学到了HTML控件和WEB控件,知道了使用动态控件和静态控件的利弊,了解

了这两种控件的区别和联系,之后我们又深入的结合例子学习很多具体的控件,其实与之前我们接触的大

同小异,还有几个我们之前没有接触过的,给我印象最深的就是那六个用起来很方便也很常见的验证控件还有

那三种数据控件,这里边老师也帮我们重温了ADO.NET的一些知识,学起来还是很熟悉的,总之学习了这

部分知识没有给自己添加多余的压力,快乐着学习,这何尝不是一种很好的状态呢。


       前面提到的六种验证控件在学习的过程中我已经有了总结,详见:                   

       http://rong1224017082.blog.163.com/blog/static/186302404201371912931158

 

       接下来我来分析一下前面提到的那三种模板控件,它们属于Web服务器控件,分别Repeater,DataList和DataGrid

 

        什么是模板控件呢?

 

        答:模板是一组 HTML 元素和控件,它们构成控件特定部分的布局,由 HTML和嵌入的服务器控件组

成。 当控件在 ASP.NET 网页中运行时,控件基础结构呈现模板的内容,而不是控件的默认 HTML。其实

说白了它们就相当于我们在vb.net中常用来显示数据的DataGridView控件

 

       那么我们为什么要使用模板控件呢?

 

       我说是为了方便,这样可能大家还不能认可我的解答,下面我来说一下不使用模板时有多麻烦大家就

知道啦。Response.Write()这个大家熟悉吧,那么我们想一下要是通过这个方法将数据库中的内容通过一个

表格的形式显示出来怎样做呢?我们需要输出一个〈table〉标签,然后开始循环。在循环中,每输出一条

记录,需要先输出一个〈tr〉标签以及若干对〈td〉标签和〈/tr〉标签。最后,以一个〈/table〉标签结尾

。这样是不是很麻烦呢?

 

        ASP.NET帮我们准备了三个Web服务器控件,可以很轻松的将数据库中的数据显示出来。接下来我会

通过对比找到它们的相同点和不同点。进而更加轻松的了解和使用它们

 

       共同点:

       


        解析:

1.虽然它们都可以通过模板显示数据,但是DataList和Reperter必须使用模板,而DataGrid还允许

   通过 TemplateColumn而只使用模板来显示一列

 

2.数据源属性有好几种,我们熟悉的有DataSet,sqlDataReader,数组等;

 

3.至于前面我们说的通过表格显示数据还需要一个循环,这里就不用那么麻烦了,DataBind()

   方法就帮我们解决啦,它通过遍历一个特定的DataSource中的记录,并对其中的每条记录建立

   一条目并对应数控件的Item集。数据控件中的每个条目将成为一个类的实例。这个类因数 

   据控的不同就有所区别啦。如:DataGrid中的每个条目是DataGridItem类的一个实例,

   Reperter的条目则是RepeaterItem类的个实例

 

       下面我们从某些角度通过三个方面对这三个控件进行比较

 

        性能:

                

 

       表现在:最明显的由DataGrid所生成的ViewState将会相当庞大,特别是在DataGrid含有较

多的行时。


可用性:

         


       表现在:

1.DataList在定制数据输出样式方面最为灵活通过设定RepeatColumn属性,你可以设

   置在一行中显示多少条记录,更进一步,你甚至可以指定DatList的内容不显示在表格

   中,而〈span〉标签中,这可以通过设定RepearLayout属性来实现 ;

 

2.DataGrid通过设置AllowSorting属性true,并加入少量代码,就具备了按不同字段

   的功能,分页以及单条记录编辑的功能也能过设定属性来解决,但它始终只能是 

   HTML表格,这是很大的缺陷了,死板

 

3.Repeater在格式化设定上的欠缺直接反应到开发时间的延长,其在内建功能(分页,

   排序及编辑)上的支持也就显得不足了

 

开发时间:

               

       表现在:

1.实现DataList中的分页、排序功能时需呀通过巧妙的编程加以实现,这就需要

   耗费一些开发时间;

 

2.DataGrid通过设置属性就可以实现分页、排序功能

 

3.Repeater在格式化设定上的欠缺直接反应到开发时间的延长

 

      那么这三种控件分别在什么时候最容易被使用呢?

 

       如果需要用户对数据记录进行排序或编辑或更新,删除时使用DataGrid;如果用户要求制定出很特别

的数据输出样式则选择DataList;如果用户对于如何显示数据无所谓的话,完全可以放心的使用Repeater

 

       根据自己的需求选择合适的控件之后,关于具体怎样实现那就需要大家底下再好好研究研究啦,动手

实践一下比听好很多呢,同志们加油,下一篇文章我将对前边提到的HTML控件和WEB控件的区别和联系

做一个总结,希望大家提出宝贵的建议。