这里再给大家分析下如何实现基于SQL语句的分页功能。我们要手动实现自己的分页效果。如下图:
同时分页时能进行排序,如下图:
要实现这些功能需要如下编码实现,具体代码如下:
.aspx页面排序时的代码:
<div style="text-align:left;margin:20px 0 20px 0;">排序方式:
<asp:Button ID="btnDate" runat="server" Text="出版日期" OnClick="btnDate_Click"
BackColor="#C0FFC0" BorderColor="SeaGreen" BorderStyle="Solid"
BorderWidth="1px" CssClass="anniu" Font-Size="12px" ForeColor="Black"
Font-Bold="False" Height="16px" Width="66px" />
<asp:Button ID="btnPrice" runat="server" Text="价格" OnClick="btnPrice_Click"
BackColor="#C0FFC0" BorderColor="SeaGreen" BorderStyle="Solid"
BorderWidth="1px" CssClass="anniu" Font-Size="12px" ForeColor="Black"
Font-Bold="False" Height="16px" Width="66px" />
<asp:Button ID="btnChangeOrder" runat="server" Text="切换排序"
BackColor="#FFD7FF" BorderColor="SeaGreen" BorderStyle="Solid"
BorderWidth="1px" CssClass="anniu" Font-Size="12px" ForeColor="Black"
Font-Bold="False" Height="16px" Width="60px"
onclick="btnChangeOrder_Click" />
</div>
.aspx页面分页时的代码:
<div class="contentstyle" style="text-align:center;margin:20px 0 20px 0;">
<asp:Label ID="lblMessage" runat="server" Text="msg" Height="25px" Font-Size="15" ></asp:Label>
<asp:Button ID="btnFirstPage" runat="server" Text="首页" Width="48px"
Height="25px" onclick="btnFirstPage_Click" />
<asp:Button ID="btnPreviousPage" runat="server" Text="上一页" Width="48px"
Height="25px" onclick="btnPreviousPage_Click" />
<asp:Button ID="btnNextPage" runat="server" Text="下一页" Width="48px"
Height="25px" onclick="btnNextPage_Click" />
<asp:Button ID="btnLastPage" runat="server" Text="末页" Width="48px"
Height="25px" onclick="btnLastPage_Click" />
<span style="font-size:12px; font-style:italic; font-weight:bold;">页大小:</span>
<asp:TextBox ID="txtPageSize" runat="server" Width="25px" Height="25px"></asp:TextBox>
<span style="font-size:12px; font-style:italic; font-weight:bold;">
<asp:RequiredFieldValidator ID="rfvTxtPageSize" runat="server"
ControlToValidate="txtPageSize" ErrorMessage="页面记录大小不能为空!">*</asp:RequiredFieldValidator>
<asp:RangeValidator ID="rvTxtPageSize" runat="server"
ControlToValidate="txtPageSize" ErrorMessage="页面记录大小必须大于零且不大于当前记录数!"
MinimumValue="1" Type="Integer">*</asp:RangeValidator>
跳到:</span>
<asp:TextBox ID="txtCurrentPageIndex" runat="server" Width="25px" Height="25px"></asp:TextBox>
<span style="font-size:12px; font-style:italic; font-weight:bold;">
<asp:RequiredFieldValidator ID="rfvTxtCPI" runat="server"
ControlToValidate="txtCurrentPageIndex" ErrorMessage="跳转页不能为空!">*</asp:RequiredFieldValidator>
<asp:RangeValidator ID="rvTxtCPI" runat="server" BorderStyle="None"
ControlToValidate="txtCurrentPageIndex" ErrorMessage="输入页必须大于零且不大于当前页面数!"
MinimumValue="1" Type="Integer">*</asp:RangeValidator>
页</span>
<asp:Button ID="btnTurnPage" runat="server" Text="GO" Width="25px"
Height="25px" onclick="btnTurnPage_Click" />
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
ShowMessageBox="True" ShowSummary="False" />
</div>
.aspx.cs对应的业务逻辑代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MyBookShop.BLL;
using MyBookShop.Models;
using System.Collections.Generic;
using System.Drawing;
//BookList_ManualPager
public partial class BookList_ManualPager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//首次加载,赋初值
try
{
ViewState["typeid"] = Convert.ToInt32(Request.QueryString["typeid"]);
}
catch
{
ViewState["typeid"] = -1;
}
RecordCount = BookManager.GetBooksCountByCategoryId(Convert.ToInt32(ViewState["typeid"]));
btnChangeOrder.Enabled = false;
Pager = 1;
PageSize = 10;
SetCurrentStatus();
&n