datalist,datagrid,repeater的一些讨论

repeater控件如果没有被绑定到一个数据源,就不显示任何东西。通常使用repeater来显示数据库表的记录。但是也可以将这个控件绑定到其他数据源,比如集合。

repeater与其他服务器控件一样,页参与页面的视图状态,所以,通常,只使用他来显示条目的列表使,而不希望跨多次页面提交保留repeater控件的视图状态。因为保留repeater控件的视图状态会降低显示页面的速度,所以在不需要视图状态时禁止他是明智的!
要想禁止单个控件的视图状态,应该将EnableViewState属性设置为False
在runat=“server”前加入EnableViewState=“false”

ASP.Net提供了三个数据控件,使得原本在ASP中繁杂的工作变得简单。
这三个控件属于数据Web控件,分别是DataGrid,DataList和Repeater。
 一般都是从datagrid开始的(至少我是这样开始的),每种数据控件
都有其自身的缺陷,因此在程序设计中并不存在最完美的选择。你必
须权衡三种控件的优缺点并决定哪一种更加适合你的程序。

  三者共同点
   1。都是用来显示数据
   2。都需要来进行绑定
   dataWebControlID.DataSource=someDataSource
   dataWebControlID.DataBind()
   someDataSource 一般是指数据控件的数据源,包括dataset,SqlDataReader
   OleDbDataReader或一组数据
   DataBind() 遍历一个特点的DataSource中的记录,并对其中的每条
   记录,建立一个对应的Item集。数据控件中的每条记录将成为一个实例。
   例如,DataGrid中的每个条目是DataGridItem类的一个实例,而Repeater
   中的条目则是RepeaterItem类的一个实例。
   3。每种控件都被允许使用模板显示数据。
 不同点
   DataList 和 Repeater 控件必须使用
   模板来输出数据,DataGrid允许通过TemplateColumn 而只使用模板来显示一列
   DataList放弃了DataGrid中列表显示数据的概念,而是使用事先定义好的模板
  (Template)来定制显示:
   <asp:DataList runat="server" id="myDataList">
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "CompanyName") %>
      </ItemTemplate>
  </asp:DataList>

   ItemTemplate还支持其它其它6种模板:
  ·AlternatingItemTemplate
  ·EditItemTemplate
  ·FooterTemplate
  ·HeaderTemplate
  ·ItemTemplate
  ·SelectedItemTemplate
  ·SeparatorTemplate
    通过EditItemIndex模板和EditCommand,UpdateCommand以及CancelCommand
     事件,DataList将支持记录编辑的功能。
    DataList的性能要比DataGrid好一些,特别是当DataList被包含在Form当中时
Repeater控件
    Repeater控件是三种数据控件中在HTML输出方面最为灵活的控件,使用模板来
    指定输出样式。Repeater支持如下五种模板:
·AlternatingItemTemplate    //控制如何对交替条目进行格式化
  ·FooterTemplate         //控制如何对其页脚进行格式化
  ·HeaderTemplate      //控制如何对其页眉进行格式化
  ·ItemTemplate       //控制如何对其显示的每个条目进行格式化
  ·SeparatorTemplate      //控制如何对其每个条目之间显示一个分隔线
    Repeater类不是继承自WebControl类的,这一点与DataGrid和DataList不同。
    Repeater唯一优于DataGrid和DataList的特点是它的性能,尤其明显优于DataGrid

HederTemplateFooterTemplate指定在真正的记录输出之前或之后应处理的HTML内容。AlternatingItemTemplateItemTemplate则指定实际的每条输出记录的HTML样式。如,你需要绑定一个包含雇员信息的DataSet到一个Repeater,字段名为EmployeeName。如果你想在页面中不排序地显示这些记录,你可以使用如下的语句:

 

  <asp:Repeater runat="server" id="rptEmployees">

    <HeaderTemplate>

      <ul>

    </HeaderTemplate>

    <ItemTemplate>

      <li><%# DataBinder.Eval(Container.DataItem, "EmployeeName") %></li>

    </ItemTemplate>

    <FooterTemplate>

      </ul>

    </FooterTemplate>

  </asp:Repeater>

    DataGrid提供了最多的功能,如允许访问者对记录编辑、排序或分页。同时它也是
    最容易使用的,甚至于简单到只需要将之添加到页面中而不必额外编写代码。不过
    这些易用性是以性能的损失为代价的。DataGrid在三种控件中是效率最低的,特别
    是在使用Web Form的情况下。

  通过使用模板,DataList提供了比DataGrid更加优秀的界面效果。不过这需要以牺
    牲一定的开发时间为代价。为了添加排序、分页和编辑功能,程序员不得不花费比
    使用DataGrid更多的精力来进行编码,虽然它的性能要优于DataGrid。

  最后,Repeater允许对数据记录作最大限度的HTML定制。通常,使用Repeater来显
    示数据记录比使用DataGrid和DataList要耗费更长的开发时间。另外,它不支持内
    建的编辑、排序和分页功能。所幸的是,Repeater在性能上要优于其它两种控件,
    特别是明显优于DataGrid。



 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值