前台
<%@ Page Language="C#" Theme="Classic" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="PagedRepeater_Default" MasterPageFile="~/navpage.master" Title="AspNetPager示例—Repeater分页示例" %>
<asp:Content runat="server" ContentPlaceHolderID="main">
<div>该示例演示如何使用AspNetPager分页控件对Repeater控件进行分页
</div>
<div>
Order ID:<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>>=</asp:ListItem>
<asp:ListItem><=</asp:ListItem>
<asp:ListItem>=</asp:ListItem>
</asp:DropDownList><asp:TextBox ID="tb_orderid" runat="server" Width="90px">11000</asp:TextBox>
<asp:Button ID="btn_search" runat="server" OnClick="btn_search_Click" Text="Search" />
<asp:Button ID="btn_all" runat="server" OnClick="btn_all_Click" Text="Show All" Enabled="false"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tb_orderid"
Display="Dynamic" ErrorMessage="RequiredFieldValidator">必需</asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tb_orderid"
Display="Dynamic" ErrorMessage="CompareValidator" Operator="DataTypeCheck" SetFocusOnError="True"
Type="Integer">必须是整数</asp:CompareValidator>
</div>
<br />
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="100%"
ShowPageIndexBox="Always" PageIndexBoxType="DropDownList"
TextBeforePageIndexBox="Go To Page: " HorizontalAlign="right" PageSize="12"
OnPageChanged="AspNetPager1_PageChanged" EnableTheming="true"
ShowCustomInfoSection="Left" CssClass="anpager"
CurrentPageButtonClass="cpb" FirstPageText="首页" LastPageText="尾页"
NextPageText="下页" onpagechanging="AspNetPager1_PageChanging" PrevPageText="上页">
</webdiyer:AspNetPager>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table width="100%" border="1" cellspacing="0" cellpadding="4" style="border-collapse:collapse">
<tr style="backGround-color:#CCCCFF"><th style="width:15%">订单编号</th><th style="width:15%">订单日期</th><th style="width:20%">客户编号</th></tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:#FAF3DC">
<td><%#DataBinder.Eval(Container.DataItem,"orderid")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"orderdate","{0:d}")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"customerid")%></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color:#eaeaea">
<td><%#DataBinder.Eval(Container.DataItem,"orderid")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"orderdate","{0:d}")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"customerid")%></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<webdiyer:AspNetPager ID="AspNetPager2" runat="server" CloneFrom="AspNetPager1">
</webdiyer:AspNetPager>
</asp:Content>
后台
代码
using System;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
public partial class PagedRepeater_Default : System.Web.UI.Page
{
const string vsKey = "searchCriteria";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState[vsKey] = "0";
bindData(0);
}
}
void bindData(int searchorderid)
{
int totalOrders = (int)SqlHelper.ExecuteScalar(CommandType.StoredProcedure, "订单分页",
new SqlParameter("@OrderID", searchorderid),
new SqlParameter("@pagesize", AspNetPager1.PageSize),
new SqlParameter("@pageindex", AspNetPager1.CurrentPageIndex),
new SqlParameter("@docount", 1));
AspNetPager1.RecordCount = totalOrders;
Repeater1.DataSource = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "订单分页",
new SqlParameter("@OrderID", searchorderid),
new SqlParameter("@pagesize", AspNetPager1.PageSize),
new SqlParameter("@pageindex", AspNetPager1.CurrentPageIndex),
new SqlParameter("@docount", 2));
Repeater1.DataBind();
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData( int.Parse( ViewState[vsKey].ToString()));
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
}
protected void btn_search_Click(object sender, EventArgs e)
{
AspNetPager1.CurrentPageIndex = 1;
btn_all.Enabled = true;
int i = int.Parse( tb_orderid.Text);
ViewState[vsKey] = tb_orderid.Text;
bindData(i);
}
protected void btn_all_Click(object sender, EventArgs e)
{
ViewState[vsKey] = "0";
btn_all.Enabled = false;
AspNetPager1.CurrentPageIndex = 1;
bindData(0);
}
}
存储过程
代码
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[订单分页]
(@OrderID Int,
@pagesize int,
@pageindex int,
@docount int)
as
if(@docount=1)
select count(*) from Orders where orderid > @orderid
else
begin
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY OrderDate desc)AS Row, * from Orders O where orderid > @orderid)
SELECT * FROM temptbl where Row between (@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize
end