zoukankan      html  css  js  c++  java
  • 关于DataList,Repeater,GridView的一些问题!! joe

          首先看看他们之间的不同点和相同点吧!!


           他们都是数据绑定容器控件,应此都相同的绑定数据源的一些属性, 和事件
        比如 属性:datasourceid,
               模板:HeaderTemplate,ItemTemplate,AlternatingItemTemplate,FooterTemplate.
               事件:DataListRepeater共有的事件:
                        ItemCommand,ItemCreated,DataBinding,ItemDataBound
                     
    1.好象没有他们都没有ItemCreating事件。
                     2.因为GridView,DataList都有更新,删除工能,所有他们还有一些Repeater没有事件:      
                       DataList编辑事件:
                       EditCommand,CancelCommand,UpdateCommand,DeleteCommand,SelectedIndexChanged
                       (没有SelectedIndexChanging事件)
                      GridView编辑事件:(因为它用显示的表格TALBLE来显示数据的,所在他的可操作比DataList,Repeate大)
                        RowCommand,RowCreated,RowEdited,RowUpdated,RowUpdating,RowDeleted,RowDeleting
                       SelectedIndexChanged,SelectedIndexChanging,
                         同时GridView还有个当Row行绑定数据时发生的事件:RowDataBound;
                     3,GridView是支持自动分页的,而DataList不支持,所以GridView还有一分页时用到的事件:
                        PageIndexChanged,PageIndexChanging,

                    
     
     还有一个问题:
                     在GridView中可以多列显示数据,为什么,因为GridView有一个TemplateField,就可以用它来定义多列自定义列,而DataList,Repeater就不能直接达到效果,但是也是可以的,
                    先来看DataList:
                     默认的话,它显示的是一行数据,且是一列,是因为它的一个叫RepeatDirection的属性默认为Vertical,是垂直排列的,你可以改变方向为Hrizontal.水平方向,然后还有一个RepeatColumns属性,给它一个数,比如“5”,那么它会在绑定第五条记录后,换行,就是在表格中增加一行(datalist是自动把记录放在一个table中的,你运行后可以查看源代码,你可以看到你的定义模板在一个TR中,数据则是在TD中)。这样DataList就是一个按一个多行五列的格式显示了!!

                  而Repeater 上一篇中我提到过,在网上查到的(http://www.cnblogs.com/joe-au/archive/2008/05/21/1204353.html那是个好方法:
                 后面我在CSDN中看到一个Repeater例子,Repeater里钳入一个表格,把一个完整表格,从HeaderTemplate到FooterTemplate,把表格每一部分放在Repeater不能模板中!!
              
    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
    <title>ASP.NET Repeater Example</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
    <HeaderTemplate>
    <table>
    <tr>
    <th>
    Name</th>
    <th>
    Description</th>
    </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr>
    <td bgcolor="#CCFFCC">
    <asp:Label runat="server" ID="Label1" Text='<%# Eval("CategoryName") %>' />
    </td>
    <td bgcolor="#CCFFCC">
    <asp:Label runat="server" ID="Label2" Text='<%# Eval("Description") %>' />
    </td>
    </tr>
    </ItemTemplate>
    <AlternatingItemTemplate>
    <tr>
    <td>
    <asp:Label runat="server" ID="Label3" Text='<%# Eval("CategoryName") %>' />
    </td>
    <td>
    <asp:Label runat="server" ID="Label4" Text='<%# Eval("Description") %>' />
    </td>
    </tr>
    </AlternatingItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate>
    </asp:Repeater>
    <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
    ID="SqlDataSource1" runat="server" SelectCommand="SELECT [CategoryID], [CategoryName],
    [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
    </form>
    </body>
    </html>
    

                    
       它显示出来也是一个多行多列的效果!!如图:
        
  • 相关阅读:
    MytBatis错题分析
    Spring核心概念
    延迟与缓存
    MyBatis的关联查询
    Mabatis注解
    [leetcode]226. Invert Binary Tree翻转二叉树
    [leetcode]633. Sum of Square Numbers平方数之和
    [leetcode]296. Best Meeting Point最佳见面地点
    [leetcode]412. Fizz Buzz报数
    [leetcode]142. Linked List Cycle II找出循环链表的入口
  • 原文地址:https://www.cnblogs.com/CWater/p/1204606.html
Copyright © 2011-2022 走看看