Repeat和AspNetPager控件

来源:互联网 发布:我爱你韩国知乎 编辑:程序博客网 时间:2024/06/15 02:30

Repeat控件

DEMO

顾名思义,此控件主要用于显示“重复的内容”。其中需要重复显示的内容放在

        <ItemTemplate></ItemTemplate>  

以下是一个简单的例子:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Repeater.aspx.cs" Inherits="RepearANDPaging.Repeater" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <style>        .stuInfo {float: left;width: 240px;height: 110px; padding: 5px 5px 5px 10px; background-color: #629269; border: 1px solid #3b3e7c;  }    </style></head><body>    <form id="form1" runat="server">        <div>            <asp:Repeater ID="Repeater1" runat="server" DataMember="DefaultView" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">                <ItemTemplate>                    <div class="stuInfo">                        姓名:<%#Eval("StudentName") %><br />                        性别:<%#Eval("Sex") %><br />                        专业:<%#Eval("Major") %><br />                        毕业院校: <%#Eval("SchoolBefore") %><br />                        地址:<%#Eval("Address") %><br />                        <%--Eval("数据库中的字段名") --%>                    </div>                </ItemTemplate>            </asp:Repeater>            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MySchoolConnectionString %>" SelectCommand="SELECT * FROM [Student]"></asp:SqlDataSource>        </div>    </form></body></html>

由于只是示例,数据是采用直接绑定数据源的方式实现的,通过后台代码绑定也是一样。
结果如下:

模板

Repeater中使用模板
Repeater支持以下5种模板
● ItemTemplate : 对每一个数据项进行格式设置 【Formats each item from the data source.】
● AlternatingItemTemplate : 对交替数据项进行格式设置
● SeparatorTemplate : 对分隔符进行格式设置
● HeaderTemplate : 对页眉进行格式设置
● FooterTemplate : 对页脚进行格式设置

再看一个例子:

<style>    html {background-color:Silver}    .content {width:600px;border:soild 1px black;background-color:White;}    .movies {border-collapse:collapse;}    .movies th,.movies td {padding:10px;border-bottom:1px solid black;}    .alternating {background-color:#eeeeee;}</style><div class="content"><asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">    <HeaderTemplate> <!-- 显示头部 -->        <table class="movies"> <!-- table头部声明-->         <tr>            <th>Movie Title</th>            <th>Movie Director</th>            <th>Box Office Totals</th>         </tr>    </HeaderTemplate>    <ItemTemplate>  <!-- 数据行 -->        <tr>            <td><%#Eval("Title") %></td>            <td><%#Eval("Director") %></td>            <td><%#Eval("BoxOfficeTotals","{0:c}") %></td> <!-- 格式化为货币形式 -->        </tr>    </ItemTemplate>    <AlternatingItemTemplate> <!-- 交错行 -->        <tr class="alternating">            <td><%#Eval("Title") %></td>            <td><%#Eval("Director") %></td>            <td><%#Eval("BoxOfficeTotals","{0:c}") %></td>        </tr>    </AlternatingItemTemplate>    <FooterTemplate> <!-- 脚注行 -->        </table>    <!-- table尾 -->    </FooterTemplate></asp:Repeater></div> 

此例来自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html

AspNetPager 控件

  • 首先搜索下载此控件 http://www.webdiyer.com/aspnetpager/demos/
  • 添加引用 , 并在aspx页面加入
    <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
  • 将此dll拖入VS的工具箱(可以省略 自己写代码也可,加入工具箱后可直接插入)
  • 此控件的更多功能DEMO 请访问:http://www.webdiyer.com/aspnetpager/demos/
    主要用于各种场合下的分页,用此控件的分页是真实的分页。相比GRIDVIEW的分页功能,GRIDVIEW是一次将数据拿出,显示的时候分页。而此控件的分页是每次从查询不同的数据出来。
    还是直接拿例子看的明白些:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AspNetPager.aspx.cs" Inherits="RepearANDPaging.AspNetPager" %><%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <style>        body {width:100%;}        #content {overflow:hidden;}        .stuInfo {float: left;width: 240px; height: 110px; padding: 5px 5px 5px 10px; background-color: #629269; border: 1px solid #3b3e7c; }        #AspNetPager1 {margin:0 auto; width:120px;  }    </style></head><body>    <form id="form1" runat="server">        <div id ="content">            <asp:Repeater ID="Repeater1" runat="server" DataMember="DefaultView">                <ItemTemplate>                    <div class="stuInfo">                        姓名:<%#Eval("StudentName") %><br />                        性别:<%#Eval("Sex") %><br />                        专业:<%#Eval("Major") %><br />                        毕业院校: <%#Eval("SchoolBefore") %><br />                        地址:<%#Eval("Address") %><br />                        <%--Eval("数据库中的字段名") --%>                    </div>                </ItemTemplate>            </asp:Repeater>                   </div>         <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10" OnPageChanged="AspNetPager1_PageChanged"></webdiyer:AspNetPager>    </form></body></html>

.cs:

namespace RepearANDPager{    public partial class AspNetPager : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!Page.IsPostBack)            {                AspNetPager1.RecordCount = Convert.ToInt16(SqlDBHelper.ExectueScalar("SELECT COUNT(*) FROM STUDENT"));                bindData();            }        }        void bindData()        {            // 当前页第一条索引和最后一条索引,例如size为10 第一个开始为1 结束10 第二页则是11和20            int i = AspNetPager1.StartRecordIndex;            int j = AspNetPager1.EndRecordIndex;            //从数据库中查找第i到j行的数据            string sql = "select * from (select row_number() over (order by studentid) as rowNum,* from student) as t where rowNum between " + i + " and " + j;            Repeater1.DataSource = SqlDBHelper.ExectueReader(sql);            Repeater1.DataBind();        }        //protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)        //{        //    //bindData();        //}        protected void AspNetPager1_PageChanged(object sender, EventArgs e)        {            bindData();        }    }}

结果 :

此处只做了实现分页的简单示例,更多内容请参照官网DEMO

在数据库中查询 第几行 到第几行的数据

--  查询10到20行的数据 行号由学生id升序排列产生select * from     (select row_number() over (order by studentid) as rowNum,* from student) as t where rowNum between 10 and 20

row_number()函数必须和over() 一起使用,这其实是一个开窗函数,有关开窗函数的知识有待进一步学习。SQL开窗函数

0 0
原创粉丝点击