看到这个题目,其实我都有点晕…这个问题,真是太没有什么水平了,大概专门作web开发哥们们,应该都有一定的了解。总而言之它们都是数据显示控件,
GridView 可能大家都知道,也是使用频率最多的控件,它有着操作简单,功能强大,表现形式多样的特点,算是.net控件集中的核心控件,它是 ASP.NET 的早期版本中提供的 DataGrid 控件的后继控件,增加了利用数据源控件绑定数据的新功能,定义多个主键字段的功能、使用绑定字段和模板来实现灵活的用户界面自定义,以及用于处理或取消事件的新模型。它还提供了内嵌缺省样式,数据分页、浏览分页数据,对列进行排序、以及编辑或删除单个记录的功能。一句话,真的是很强大。但是“老天是公平”,在给了它强大的功能的同时也留给了它一点点遗憾,在显示表现形式简单的大量数据的时候,中间存在了大量的非必要的性能损失。做过一个测试,同样的数据量前提下GridView明显慢于其它的数据控件。结论在某些简单显示数据列表时,不要求其它复杂操作的情况下,还是不要用它。
Repeater 顾名思义 就是重复绑定数据的控件,它没有内置布局。只能使用模板创建 Repeater 控件的布局相,比较GridView而言它可能没有后者强大的功能,多样的表现形式,但是就是因为它的简单使的它成为所有数据显示控件中效率最高的控件,如果没有很复杂的功能、表现形式需求,它绝对是首选。
下面出场的是今天我要说的主角,在我还不是很明白它与前面两个控件的区别的时候,也看过很对的介绍它们区别的文章,都说它是界于GridView、repeater之间的一个控件,效率还行,功能一般,看的最多的一句话是“DataList 控件与 Repeater 控件的不同之处在于:DataList 控件将项显式放在 HTML 表中,而 Repeater 控件则不然”。一看确实是这么回事,在单纯的显示数据列表的时候,操作没有GridView、Repeater简单方便,效率也不是最高的。既不简单、也不高效。鸡肋??!!
错!“牛刀”只有在杀牛的时候才知道什么叫利器,你拿牛刀对付小鸡,当然是手忙脚乱,没准还伤了自己。但是对付“牛”问题,那叫舒服~!“牛刀一出,万牛臣服!” 最强点--自定义表现形式的超强灵活性!!DataList 可以实现任何样式的数据绑定,在贴切点说它是“治疗”绑定特殊样式的“通用药”。只要是数据绑定,结合数据源控件,你可以用它设计出千变万化的形式。
举个例子,我以前碰到一个问题,就是要实现如图样子
开始真是一头雾水,实现的功能要求是动态的读取数据库生成上图的样子,一行最多显示2列。首先这个功能可能不是只有它可以实现,GridView也可以,但是实现该效果绝对是 Datalist最合适。
搞定~!用GridView?..虽然和这个代码差不多,但是一行两列呢?RepeatColumns=“2”搞定!
GridView得想想了。效率上就不说了,GridView直接淘汰。
真正让我认识到DataList 实用强大的其实是在做一个 调查表自动生成系统中,要实现自定义生成调查表,调查表包括了单选、多选、填空、问答。快成一个考试系统了。
你可以想象用GridView实现吗?..你可以想象用repeater实现吗?….于是我想到了DataList
一般的这种效果都是用javascript来实现,但是作为熟悉c#代码多于js 的我来说。我还是用DataList实现了。类似于上面的例子,只不过里面的Checkboxlist控件编程了,一个个的radibuttonlist、文本框、panel、控件集合。思想其实和上面的一样。只是逻辑复杂了一点。
在我完成的那一刻,发现DataList 在某些特定场合还真是“牛刀”啊~。
从灵活性和执行效率上综合考虑,比较GridView Repeater DataList三者、Repeater当属第一。但是对待嵌套绑定问题、疑难杂症,还是用DataList思考一下吧。
这些是我在使用三个绑定控件的时候,对它们的认识,纯属个人意见,如果有异议,可以交流。。