Repeat和AspNetPager控件

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 控件

    <%@ 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开窗函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值