前一篇文章是采用存儲過程來進行分頁的,但是存在缺陷,沒有代碼重用,針對不同的表或者不同的視圖都需要去編寫存儲過程,這樣很麻煩,代碼的重用性很差。本文將通過一個用戶控件來實現數據分頁的頁面層以達到代碼重用的目的。
分頁是借助用戶自定義控件來實現,在這裡主要有以下兩種方法來實現:
(一).吳旗娃的AspNetPager組件(推薦使用)
首先,下載該dll文件。
在工具箱中,鼠標右鍵,“選擇項”,添加剛下載的dll文件。
然後,將會在工具箱中看到一個AspNetPager分頁控件,拖到頁面,再拖一個數據顯示控件,Gridview或Repeater。
最後,寫後台代碼如下:
using System;
using System.Data;
using System.Configuration;
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
//獲取並綁定數據
public void BindData()
{
//連接數據庫
string strCon = "server=.;database=Northwind;uid=sa;pwd=";
SqlConnection con = new SqlConnection(strCon);
string sql = "select * from Customers";
SqlDataAdapter sda = new SqlDataAdapter(sql,con);
DataSet ds = new DataSet();
sda.Fill(ds);
//AspNetPager分頁控件如何用
DataView dv = ds.Tables[0].DefaultView;
//使用PagedDataSource類
PagedDataSource pds = new PagedDataSource();
AspNetPager1.RecordCount = dv.Count;//取得記錄總數
pds.DataSource = dv;
pds.AllowPaging = true;
//取得當前頁的索引
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;//取得每頁顯示的記錄數
GridView1.DataSource = pds; //指定數據源
GridView1.DataBind();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
BindData();
}
}