以前在利用GridView、ListView做分頁顯示的時候,要麼使用控件自身的分頁功能,要麼手動寫代碼實作分頁功能,最近發現有這麼一個AspNetpager的分頁控件, 還挺不錯。
(1)、先下載下傳aspnetpager.dll這個檔案,在VS2005建立Web項目中添加該引用,并将其添加到工具欄中,這樣可以輕易拖放。
(2)、在cs檔案中添加引用:using Wuqi.Webdiyer;
以下是代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SpiltPage.aspx.cs" Inherits="SpiltPage" %>
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<head runat="server">
<title>分頁ASPNETPAGER控件使用</title>
<style type="text/css">
/*拍拍網風格*/.paginator
{
font: 11px Arial, Helvetica, sans-serif;
padding: 10px 20px 10px 0;
margin: 0px;
}
.paginator a
padding: 1px 6px;
border: solid 1px #ddd;
background: #fff;
text-decoration: none;
margin-right: 2px;
.paginator a:visited
.paginator .cpb
font-weight: bold;
font-size: 13px;
border: none;
.paginator a:hover
color: #fff;
background: #ffa501;
border-color: #ffa501;
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None">
<FooterStyle BackColor="Tan" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
</div>
<webdiyer:aspnetpager CssClass="paginator" id="AspNetPager1" runat="server" OnPageChanged="ChangePage" AlwaysShow="True" FirstPageText="首頁" Font-Size="Smaller" LastPageText="末頁" NextPageText="下一頁" NumericButtonCount="5" PrevPageText="上一頁" ShowInputBox="Always"></webdiyer:aspnetpager>
</form>
</body>
</html>
----------------------------------------------------------------------------------------------------
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 System.Data.SqlClient;
using Wuqi.Webdiyer;
public partial class SpiltPage : System.Web.UI.Page
{
string conString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
string strSQL = "select count(*) from BMSK_GB";
using (SqlCommand cmd = new SqlCommand(strSQL, con))
{
AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
}
}
BindData();
}
}
//資料綁定
public void BindData()
using (SqlConnection con = new SqlConnection(conString))
con.Open();
string strSQL = "select SKBM as 水庫編碼,SKMC as 水庫名稱,SZS as 所在市,SZX as 所在縣,SFWX as 是否危險 from BMSK_GB";
SqlDataAdapter da = new SqlDataAdapter(strSQL,con);
DataSet ds = new DataSet();
da.Fill(ds,AspNetPager1.PageSize*(AspNetPager1.CurrentPageIndex-1),AspNetPager1.PageSize,"tab");
this.GridView1.DataSource = ds.Tables["tab"];
this.GridView1.DataBind();
//翻頁事件
protected void ChangePage(object src, PageChangedEventArgs e)
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
BindData();
}
後續補充說明:
對于用存儲過程,可以寫一個方法傳回一個可用的DataSet對象提供使用,如下:
public static DataSet GetAllUserPage(string table, string fields, string orderField, string sqlWhere,int pageSize, int pageIndex, out int totalPage, out int totalRecord)
DataSet ds = null;
string spName = "[dbo].[sp_super_page]";
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@TableName",SqlDbType.VarChar, 5000),
new SqlParameter("@Fields",SqlDbType.VarChar, 5000),
new SqlParameter("@OrderField",SqlDbType.VarChar, 5000),
new SqlParameter("@sqlWhere",SqlDbType.VarChar, 5000),
new SqlParameter("@pageSize",SqlDbType.Int),
new SqlParameter("@pageIndex",SqlDbType.Int),
new SqlParameter("@TotalPage",SqlDbType.Int),
new SqlParameter("@totalRecord",SqlDbType.Int)
};
parameters[0].Value = table;
parameters[1].Value = fields;
parameters[2].Value = orderField;
parameters[3].Value = sqlWhere;
parameters[4].Value = pageSize;
parameters[5].Value = pageIndex;
parameters[6].Direction = ParameterDirection.Output;
parameters[7].Direction = ParameterDirection.ReturnValue;
ds = SQLHelper.ExecuteDataset(SQLHelper.connectionStr, CommandType.StoredProcedure, spName, parameters);
totalPage = Convert.ToInt32(parameters[6].Value);
totalRecord = Convert.ToInt32(parameters[7].Value);
return ds;