粗略区分Gridview,repeater,datelist数据控件的差异

在web开发中,这三个都是数据控件,那么他们具体有些怎样的区别呢?

ok,首先,GridView 可能大家都知道,也是我们在asp.net中使用频率最多的控件。

它的优点是操作简单,功能强大,表现形式多样。算是.net控件集中的核心控件,它是 ASP.NET 的早期版本中提供的 DataGrid 控件的后继控件,增加了利用数据源控件绑定数据的新功能,定义多个主键字段的功能、使用绑定字段和模板来实现灵活的用户界面自定义,以及用于处理或取消事件的新模型。它还提供了内嵌缺省样式,数据分页、浏览分页数据,对列进行排序、以及编辑或删除单个记录的功能。

那么,缺点呢?在它强大的功能下当然也有一点点遗憾,在显示表现形式简单的大量数据的时候,中间存在了大量的非必要的性能损失。有人做过一个测试,同样的数据量前提下GridView明显慢于其它的数据控件。结论在某些简单显示数据列表时,不要求其它复杂操作的情况下,还是不要用它。

Repeater 顾名思义 就是重复绑定数据的控件,它没有内置布局。只能使用模板创建 Repeater 控件的布局相。当然,可以通过外部css来灵活控制样式。比较GridView而言它可能没有后者强大的功能,多样的表现形式,但是就是因为它的简单使的它成为所有数据显示控件中效率最高的控件,如果没有很复杂的功能、表现形式需求,它应该是首选。

现在主要的是的datalist控件。在我还不是很明白它与前面两个控件的区别的时候,也看过很对的介绍它们区别的文章,都说它是界于GridView、repeater之间的一个控件,效率还行,功能一般,看的最多的一句话是“DataList 控件与 Repeater 控件的不同之处在于:DataList 控件将项显式放在 HTML 表中,而 Repeater 控件则不然”。一看确实是这么回事,在单纯的显示数据列表的时候,操作没有GridView、Repeater简单方便,效率也不是最高的。既不简单、也不高效。那么,鸡肋??!!错!“牛刀”只有在杀牛的时候才知道什么叫利器,你拿牛刀对付小鸡,当然是手忙脚乱,没准还伤了自己。但是对付“牛”问题,那叫舒服~!“牛刀一出,万牛臣服!” 最强点--自定义表现形式的超强灵活性!!DataList 可以实现任何样式的数据绑定,在贴切点说它是“治疗”绑定特殊样式的“通用药”。只要是数据绑定,结合数据源控件,你可以用它设计出千变万化的形式。
举个例子,我以前碰到一个问题,就是要实现如图样子

粗略区分Gridview,repeater,datelist数据控件的差异

开始真是一头雾水,实现的功能要求是动态的读取数据库生成上图的样子,一行最多显示8列。首先这个功能可能不是只有它可以实现,GridView也可以,但是实现该效果绝对是 Datalist最合适。代码如下:

    <asp:DataList ID="DataList1" runat="server" style="margin-top: 10px; margin-left: 20px" Width="600px">
            <ItemTemplate>
               <fieldset>
                  <legend>
                            <asp:CheckBox ID="ckbFirstRole" runat="server" Text=‘<%# Eval("text") %>‘ onclick="SelectDept(this);" />
                  </legend>
                  <asp:HiddenField ID="HiddenField1" runat="server" Value=‘<%# Eval("value") %>‘ />
                        <asp:CheckBoxList ID="chblRole" runat="server" Style="margin-left: 10px" DataSourceID="ObjectDataSource1" DataTextField="region_name" DataValueField="tax_no" RepeatColumns="8">
                        </asp:CheckBoxList>
                        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetChildRegion" TypeName="HXCRM.BLL.Bregion">
                            <SelectParameters>
                                <asp:ControlParameter ControlID="HiddenField1" Name="node" PropertyName="Value" Type="String" />
                            </SelectParameters>
                        </asp:ObjectDataSource>
                </fieldset>
          </ItemTemplate>
    </asp:DataList> 

ok,完工!!那么用GridView呢?.虽然代码和这个差不多,但是一行两列呢?RepeatColumns=“2”搞定,GridView可得想想了。唉,效率上就不想多说,GridView直接淘汰。

真正让我认识到DataList 实用强大的其实是在做一个 调查表自动生成系统中,要实现自定义生成调查表,调查表包括了单选、多选、填空、问答。快成一个考试系统了。你可以想象用GridView实现吗?..你可以想象用repeater实现吗??.于是我想到了DataList!!!

一般的这种效果都是用javascript来实现,但是作为熟悉c#代码多于js 的我来说。我还是用DataList实现了。类似于上面的例子,只不过里面的Checkboxlist控件编程了,一个个的radibuttonlist、文本框、panel、控件集合。思想其实和上面的一样。只是逻辑复杂了一点。

在我完成的那一刻,发现DataList 在某些特定场合还真是“牛刀”啊……。

从灵活性和执行效率上综合考虑,比较GridView Repeater DataList三者、Repeater当属第一。但是对待嵌套绑定问题、疑难杂症,还是用DataList思考一下吧。

这些是我在使用三个绑定控件的时候,个人对它们的认识。

粗略区分Gridview,repeater,datelist数据控件的差异

上一篇:springdata redis实现的简单demo


下一篇:C# 判断字符串是否可以转化为数字