GridView用儲存過程做數字分頁的完整代碼

 存儲過程:

SQL codeALTER PROCEDURE PageSplit
(
  @PageCurrent int, --當前頁
  @PageCount int, --每頁的數量
  @PageTotal int output --總共有多少記錄
)
AS
    declare @Start int --當前頁的第一行是總記錄的第幾行
    declare @Last int  --當前頁的最後一行是總記錄的第幾行
   
    set @Start=(@PageCurrent-1)*@PageCount+1
    set @Last=@PageCurrent*@PageCount
   
    --得到總記錄數
    set @PageTotal=(select count(*) from NewsInfo)
   
    --查詢的信息
    select NewsTitle,NewsDate from NewsInfo where NewsID between @Start and @Last order by NewsDate desc
   
    RETURN

 


C# codeusing 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;
 
public partial class News_PageSplit : System.Web.UI.Page
{
    int PageCount = 5;
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            int PageCurrent =1;
           
            ShowMes(PageCurrent, PageCount);
         
        }
    }
    public void ShowMes(int pagecurrent,int pagecount)
    {
        SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["PhotoConn"]);
        Conn.Open();
        SqlDataAdapter da =new SqlDataAdapter ("PageSplit",Conn);
        da.SelectCommand.CommandType=CommandType.StoredProcedure;
        //SqlParameter[] myparam ={  new SqlParameter("@PageCurrent",pagecurrent),
        //                           new SqlParameter("@PageCount",pagecount)                         
        //                        };
       da.SelectCommand.Parameters.Add("@PageCurrent", pagecurrent);
       da.SelectCommand.Parameters.Add("@pageCount",pagecount);
       da.SelectCommand.Parameters.Add("@PageTotal",SqlDbType.Int);
       da.SelectCommand.Parameters["@PageTotal"].Direction = ParameterDirection.Output;

        //綁定數據源

       DataSet ds = new DataSet();
       da.Fill(ds);
        //總記錄數
       double total = Convert.ToDouble(da.SelectCommand.Parameters["@PageTotal"].Value);
        //總頁數
       double page = Math.Ceiling(total / PageCount);
        //當前頁
       LabCurrent.Text = pagecurrent.ToString();
       //總共有多少頁
       LabCount.Text = page.ToString();

       GridView1.DataSource = ds;
       GridView1.DataBind();

       BindButton();
    }
    protected void LinkButton2_Click(object sender, EventArgs e)
    {
            int current = int.Parse(LabCurrent.Text) - 1;
            LabCurrent.Text = current.ToString();
            ShowMes(current, PageCount);
     
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
            int current = int.Parse(LabCurrent.Text) + 1;
            LabCurrent.Text = current.ToString();
            ShowMes(current, PageCount);
    }
    public void BindButton()
    {
        if (LabCurrent.Text == "1")
        {
            LbPrev.Enabled = false;
        }
        else
        {
            LbPrev.Enabled = true;
        }

        if (LabCurrent.Text == LabCount.Text)
        {
            LBnext.Enabled = false;
        }
        else
        {
            LBnext.Enabled = true;
        }
    }
}


 

發佈了42 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章