源码下载:​​http://down.qiannao.com/space/file/qiannao/share/2010/6/4/Paging.zip/.page​

ASP.NET数据控件中提供了一个叫“DataPager”的控件用于分页,但是这个控件的用法却非常局限,只有实现了IPageableItemContainer接口才能使用此控件进行分页,b并且是假分页,ASP.NET3.5中也只有ListView控件实现了该接口。ListView控件是一个功能非常强大的控件,他基本上涵盖了其他所有数据绑定控件的功能,而且用法也稍有不同,他提供了很多模板,以其最常用的两个为例,在LayoutTemplate中布局,在需要其他模板的位置加上PlaceHolder占位控件,然后在其他模板中实现,例如:

<LayoutTemplate>

<table style="width:300px;">

<thead>

<tr>

<th>编号</th>

<th>县市</th>

<th>市编号</th>

</tr>

</thead>

<tbody>

<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>

</tbody>

</table>

</LayoutTemplate>

<ItemTemplate>

<tr>

<td><%# Eval("o_id") %></td>

<td><%# Eval("o_name") %></td>

<td><%# Eval("c_id") %></td>

</tr>

</ItemTemplate>

DataPager控件主要有两个呈现项NextPreviousPagerField和NumericPagerField,前者是提供“上一页”、“下一页”等按钮,后者则提供“1”、“2”、“3”这种数字翻页的按钮。

DataPager有几个重要属性:

PagedControlID="ListView1" //被分页的控件

PageSize="10" //每页显示的条数

TotalRowCount //总条数(只读)

StartRowIndex //当前页第一条记录在总记录中的索引(只读)

由这几个属性,则可以计算出

总页数= Math.Ceiling(pager.TotalRowCount * 1.0 / pager.PageSize)

当前页数=(pager.StartRowIndex / pager.PageSize) + 1


以下是示例源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>


<!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></title>

<style type="text/css">

.button

{

background-color:#CEEDFA;

height:20px;

border:solid 1px #3399FF;

}

body

{

color:#333333;

}

</style>

</head>

<body>

<form id="form1" runat="server">

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">

<LayoutTemplate>

<table style="width:300px;">

<thead>

<tr>

<th>编号</th>

<th>县市</th>

<th>市编号</th>

</tr>

</thead>

<tbody>

<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>

</tbody>

</table>

</LayoutTemplate>

<ItemTemplate>

<tr>

<td><%# Eval("o_id") %></td>

<td><%# Eval("o_name") %></td>

<td><%# Eval("c_id") %></td>

</tr>

</ItemTemplate>

</asp:ListView>

<br />

<table>

<tr>

<td>

<%= string.Format("共<span style='color:#3399FF'>{0}</span>条记录 &nbsp;每页显示<span style='color:#3399FF'>{1}</span>条 &nbsp;共<span style='color:#3399FF'>{2}</span>页 &nbsp;当前第<span style='color:#3399FF'>{3}</span>页&nbsp;&nbsp;&nbsp;&nbsp;", pager.TotalRowCount, pager.PageSize, Math.Ceiling(pager.TotalRowCount * 1.0 / pager.PageSize), (pager.StartRowIndex / pager.PageSize) + 1)%>

</td>

<td>

<asp:DataPager runat="server" ID="pager" PagedControlID="ListView1" PageSize="10">

<Fields>

<asp:NextPreviousPagerField FirstPageText="首页" PreviousPageText="上一页" NextPageText="下一页" ButtonType="Button" ButtonCssClass="button"

LastPageText="尾页" ShowFirstPageButton="true" ShowLastPageButton="true" ShowNextPageButton="true" ShowPreviousPageButton="true" />

<asp:NumericPagerField ButtonCount="5" NumericButtonCssClass="button" ButtonType="Button" NextPreviousButtonCssClass="button" />

</Fields>

</asp:DataPager>

</td>

</tr>

</table>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connstr %>"

SelectCommand="SELECT * FROM [County]">

</asp:SqlDataSource>

</form>

</body>

</html>


运行效果:

.NET分页之DataPager控件分页(假分页)_html