<AspNetPagerDoc>
<Class name="AspNetPager">
<summary>
用于ASP.NET Web应用程序中对数据进行分页的的服务器控件。
</summary>
<remarks>
不同于DataGrid或GridView等带分页功能的数据绑定控件,AspNetPager分页控件本身并不显示任何数据,而只显示分页导航元素,数据在页面上的显示方式与该控件无关。AspNetPager分页控件可以为GridView、DataGrid、DataList、Repeater以及自定义的数据绑定控件进行分页。AspNetPager不仅仅是一个分页控件,它还可以实现如图片浏览等程序中的前一页后一页等导航功能。
<p>AspNetPager控件的分页方法和GridView非常相似,但AspNetPager的分页功能更为灵活、强大。AspNetPager分页控件不仅仅支持默认的PostBack方式分页,它还支持通过Url来实现分页以及Url重写功能,这使得访问者可以直接输入相应的Url来访问任何页面,并且搜索引擎也可以直接检索每个页面,若使用DataGrid或GridView等.net框架自带的数据绑定控件的分页功能,这些是无法实现的。</p><p>
要使用 AspNetPager 分页控件,必须最少指定它的 <see cref="RecordCount" /> 属性的值,另外如果需要,指定并编写 <see cref="PageChanging"/> 或 <see cref="PageChanged" /> 事件的处理程序,可以在PageChanging事件处理程序中取消分页事件,在PageChanged事件处理程序中绑定数据或实现自定义的数据呈现逻辑。
<see cref="RecordCount" /> 属性指定要分页的所有数据的总项数,若未指定该值或该值小于等于 <see cref="PageSize" /> ,即要分页的数据只有一页,则AspNetPager控件默认会自动隐藏而不显示任何内容,若需在只有一页数据的情况下显示AspNetPager分页控件,可以将它的AlwaysShow属性设为true即可。
</p></remarks>
<example>
以下示例说明如何用AspNetPager对Repeater进行分页。
<code>
<![CDATA[
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.SqlClient"%>
<script runat="server" Language="C#">
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int totalOrders = (int)SqlHelper.ExecuteScalar(CommandType.StoredProcedure, "P_GetOrderNumber");
AspNetPager1.RecordCount = totalOrders;
bindData();
}
}
void bindData()
{
Repeater1.DataSource = SqlHelper.ExecuteReader(CommandType.StoredProcedure,"P_GetPagedOrders2005",
new SqlParameter("@startIndex", AspNetPager1.StartRecordIndex),
new SqlParameter("@pageSize", AspNetPager1.PageSize));
Repeater1.DataBind();
}
void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
</script>
<HTML><HEAD>
<TITLE> AspNetPager Samples </TITLE>
<META NAME="Author" CONTENT="Webdiyer (www.webdiyer.com)">
</HEAD>
<BODY>
<form runat="server">
<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%"><asp:Literal ID="Literal1" runat="server" Text="<%$Resources:LocalizedText,orderid%>" /></th><th style="width:15%"><asp:Literal ID="Literal3" runat="server" Text="<%$Resources:LocalizedText,orderdate%>" /></th><th style="width:30%"><asp:Literal ID="Literal5" runat="server" Text="<%$Resources:LocalizedText,companyname%>" /></th><th style="width:20%"><asp:Literal ID="Literal2" runat="server" Text="<%$Resources:LocalizedText,customerid%>" /></th><th style="width:20%"><asp:Literal ID="Literal4" runat="server" Text="<%$Resources:LocalizedText,employeename%>" /></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, "companyname")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"customerid")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"employeename")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="100%" HorizontalAlign="right" PageSize="8" OnPageChanged="AspNetPager1_PageChanged">
</webdiyer:AspNetPager>
</form>
</BODY>
</HTML>
]]>
</code><p>该示例所用的Sql Server存储过程代码如下(仅适用于SQL Server 2005):</p><code>
<![CDATA[
CREATE PROCEDURE P_GetPagedOrders2005
@startIndex INT,
@pageSize INT
AS
begin
WITH orderL�