GridView中使用存储过程分页

数据库:

USE [student]

GO
/****** Object:  StoredProcedure [dbo].[sp_Student_Select_by_Page_rowNumber]    Script Date: 11/24/2011 20:49:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        lai
-- Create date: 2010-10-3
-- Description:    使用sql2005新增功能rownumber函数完成高效分页
ALTER PROCEDURE [dbo].[sp_Student_Select_by_Page_rowNumber]
    @pageSize int,  --每页记录数量
    @pageCount int output,  --总页数
    @pageIndex int  --当前页索引号

    
AS
BEGIN
declare @totalRecords int
select @totalRecords = count(sid) from student
if(@totalRecords % @pageSize = 0)
    set @pageCount = @totalRecords / @pageSize;
else
    set @pageCount = @totalRecords / @pageSize +1;
with temp as (select row_number() over (order by sid) as id,* from student)
select * from temp where id between (@pageIndex -1)*@pageSize +1 and @pageIndex * @pageSize
return @totalRecords

end


代码:


protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
            BindStudent(1);
    }
    private void BindStudent(int pageIndex)
    {
        
        using (SqlConnection sqlcnn = new SqlConnection("server=LENOVO-46E4091D\\SQLEXPRESS; initial catalog=student; integrated security=true;"))
        {
            SqlCommand sqlcmm = sqlcnn.CreateCommand();
            sqlcmm.CommandText = "sp_Student_Select_by_Page_rowNumber";
            sqlcmm.CommandType = System.Data.CommandType.StoredProcedure;
            sqlcmm.Parameters.AddWithValue("@pageSize", 5);
            sqlcmm.Parameters.Add("@pageCount", SqlDbType.Int).Direction =ParameterDirection.Output;
            sqlcmm.Parameters.AddWithValue("@pageIndex", pageIndex);
            SqlDataAdapter da = new SqlDataAdapter(sqlcmm);
            DataSet ds = new DataSet();
            da.Fill(ds);
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();
            this.HiddenField1.Value = pageIndex.ToString();
            this.HiddenField2.Value = sqlcmm.Parameters["@pageCount"].Value.ToString();
            this.Label1.Text = pageIndex + "/" + this.HiddenField2.Value;
        }
    }

如果用的是按钮再分别写按钮的单击事件。

protected void Button1_Click(object sender, EventArgs e)//首页
    {
        this.BindStudent(1);
    }
    protected void Button2_Click(object sender, EventArgs e)//上一页
    {
        int index = Convert.ToInt32(this.HiddenField1.Value);
        if (index > 0)
        {
            index--;
        }
        this.BindStudent(index);
    }
    protected void Button3_Click(object sender, EventArgs e)//下一页
    {
        int index = Convert.ToInt32(this.HiddenField1.Value);
        int total = Convert.ToInt32(this.HiddenField2.Value);
        if (index < total)
        {
            index++;
        }
        this.BindStudent(index);
    }
    protected void Button4_Click(object sender, EventArgs e)//最后一页
    {
        this.BindStudent(Convert.ToInt32(this.HiddenField2.Value));
    }
  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值