官方已经给出了很多列子,我这里只是把最常用的2种列出来了,以后要用的时候,直接复制。
前台都采用
<!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 runat="server">
<title>URL 查询并分页</title>
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Serach" />
<asp:Repeater ID="Repeater1" runat="server" >
<HeaderTemplate><table border="1" width="100%"><tr><td>客户编号</td><td>员工编号</td><td>订购日期</td><td>价格</td><td>地址</td></tr></HeaderTemplate>
<ItemTemplate><tr><td><%#Eval("customerid")%></td>
<td><%#Eval("employeeid")%></td>
<td><%#Eval("orderdate")%></td>
<td><%#Eval("freight")%></td>
<td><%#Eval("shipaddress")%></td>
</tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
<webdiyer:aspnetpager id="AspNetPager1" runat="server" PageSize="10"
AlwaysShow="True" ShowCustomInfoSection="Left" ShowDisabledButtons="false"
ShowPageIndexBox="always" PageIndexBoxType="DropDownList"
CustomInfoHTML="Page:<font color='red'><b>%currentPageIndex%</b></font>/%PageCount% %PageSize%/Page Order:%StartRecordIndex%-%EndRecordIndex% of %RecordCount%" UrlPaging="true" onpagechanged="AspNetPager1_PageChanged" ></webdiyer:aspnetpager>
</div>
</form>
</body>
</html>
后台 带查询
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
private string strselect = "";
protected void Page_Load(object sender, EventArgs e)
{
string cmd = "select count(*) from orders";
if (Request.QueryString["selectsql"] != null)
{
strselect = Server.UrlDecode(Request.QueryString["selectsql"].ToString());
cmd = "select count(*) from orders where customerid like '%" + strselect + "%'";
}
AspNetPager1.RecordCount = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text, cmd);
}
protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text.Trim() == "")
{
Response.Redirect("Default.aspx");
}
else
{
Response.Redirect("Default.aspx?selectsql=" + Server.UrlEncode(this.TextBox1.Text.Trim()));
}
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
string cmd ="select orderid,customerid,employeeid,orderdate,freight,shipaddress from orders";
if (strselect != "")
{
cmd = "select orderid,customerid,employeeid,orderdate,freight,shipaddress from orders where customerid like '%" + strselect + "%'";
this.TextBox1.Text = strselect;
}
DataView dv =SqlHelper.ExecuteDataset(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, cmd).Tables[0].DefaultView;
AspNetPager1.RecordCount = dv.Count;
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dv;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
Repeater1.DataSource = pds;
Repeater1.DataBind();
}
}
后台 不带查询
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string cmd = "select count(*) from orders";
int totalOrders = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,cmd);
AspNetPager1.RecordCount = totalOrders;
bindData();
}
}
void bindData()
{
Repeater1.DataSource = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "P_GetPagedOrders2000",
new SqlParameter("@startIndex", AspNetPager1.StartRecordIndex),
new SqlParameter("@endIndex", AspNetPager1.EndRecordIndex));
Repeater1.DataBind();
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
}
存储过程
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[P_GetPagedOrders2000]
(@startIndex int,
@endIndex int
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select orderid from orders order by orderid desc
select orderid,customerid,employeeid,orderdate,freight,shipaddress from orders o inner join @indextable t on O.orderid=t.nid
where t.id between @startIndex and @endIndex order by t.id
set nocount off
RETURN
对于少量数据,不带查询
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Products pdao = new Products();
AspNetPager1.RecordCount = int.Parse(pdao.getproductcount());
}
}
void bindData()
{
Products pdao = new Products();
AspNetPager1.RecordCount = int.Parse(pdao.getproductcount());
PagedDataSource pds = new PagedDataSource();
pds.DataSource = pdao.getproducts().Tables[0].DefaultView;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
Repproduct.DataSource = pds;
Repproduct.DataBind();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
bindData();
}