1. 程式人生 > >VS-利用AspNetPager控制元件實現真分頁

VS-利用AspNetPager控制元件實現真分頁

Web開發中的分頁常見的真分頁假分頁:此篇文章將講解如何利用第三方控制元件(AspNetPager)實現真分頁

2.引用AspNetPager控制元件,為自己所用。(右擊工具箱-選擇項)

3.介面與資料顯示控制元件結合使用:(這裡以GridView控制元件為例)

4.設定AspNetPager控制元件的屬性:

          PageSize:顯示頁數 (此例中設定為2)

5.後臺程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class TruePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //頁面第一次載入
        if (!Page.IsPostBack)
        {
            AspNetPager1.RecordCount  = GetNum();
            Bind();
        }
    }
    //繫結資料方法
    private void Bind()
    {
        SqlConnection con = CreateCon();
        //使用cmd,DataAdapter結合dataSet ,利用儲存過程
        SqlCommand cmd = new SqlCommand("SelectPage", con);
        //給儲存過程新增兩個引數,一個AspNetPager當前頁的開始記錄索引和結束記錄索引
        SqlParameter sp1 = new SqlParameter("@startPageIndex",AspNetPager1 .StartRecordIndex  );
        SqlParameter sp2 = new SqlParameter("@endPageIndex", AspNetPager1.EndRecordIndex);
        cmd.Parameters.Add(sp1);
        cmd.Parameters.Add(sp2);
        cmd.CommandType = CommandType.StoredProcedure;
        DataSet ds = new DataSet();
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(ds, "User");
        GridView1.DataSource = ds.Tables["User"];
        GridView1.DataBind();
    }
    //建立資料庫連線物件
    private  SqlConnection CreateCon()
    {
        SqlConnection con = new SqlConnection("server=.;database=User;uid=sa;pwd=123456");
        con.Open();
        return con;
    }
    //查詢某個資料表的記錄條數方法
    private int GetNum()
    {
        SqlConnection con = CreateCon();
        SqlCommand cmd = new SqlCommand("select Count(*) from UserInfo", con);
        int num=(int)cmd.ExecuteScalar();
        return num ;
    }
    //當前頁變化時,重新繫結資料
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        Bind();
    }
}

6.儲存過程程式碼:

CREATE PROCEDURE [dbo].[SelectPage]
	@startPageIndex int ,
	@endPageIndex int
	
AS
BEGIN
	-- 建立一個臨時表,利用ROW_NUMBER函式增添新列row,按順序排列,參照牛腩
	with temptb as(
		select ROW_NUMBER() OVER(ORDER BY	Age desc) as row, *  from UserInfo
	)
    -- 在臨時表中按照開始記錄索引和結束記錄索引值來查詢記錄
	select * from temptb where Row between @startPageIndex and @endPageIndex
END

最終顯示效果: