.NET分页之DataPager控件分页(假分页)
博客原文:http://blog.csdn.net/dongdong625/archive/2010/06/04/5647544.aspx
源码下载: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>条记录 每页显示<span style='color:#3399FF'>{1}</span>条 共<span style='color:#3399FF'>{2}</span>页 当前第<span style='color:#3399FF'>{3}</span>页 ", 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>
运行效果:
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dongdong625/archive/2010/06/04/5647544.aspx