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;
        }
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值