ASP代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Bindboke(1);
}
private void Bindboke(int pageIndex)
{
string str = ConfigurationManager.ConnectionStrings["bokeConnectionString"].ConnectionString;
using (SqlConnection cnn=new SqlConnection(str))
{
SqlCommand cmm = cnn.CreateCommand();
cmm.CommandText = "fenye";
cmm.CommandType = System.Data.CommandType.StoredProcedure;
cmm.Parameters.AddWithValue("@pageSize", 3);
cmm.Parameters.Add("@pageCount", SqlDbType.Int).Direction = ParameterDirection.Output;
cmm.Parameters.AddWithValue("@pageIndex", pageIndex);
SqlDataAdapter da = new SqlDataAdapter(cmm);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds.Tables[0];
this.DataBind();
this.HiddenField1.Value = pageIndex.ToString();
this.HiddenField2.Value = cmm.Parameters["@pageCount"].Value.ToString();
this.Label1.Text = pageIndex + "/" + this.HiddenField2.Value;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.Bindboke(1);
}
protected void Button2_Click(object sender, EventArgs e)
{
int index = Convert.ToInt32(this.HiddenField1.Value);
if (index > 1)
{
index--;
}
this.Bindboke(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.Bindboke(index);
}
protected void Button4_Click(object sender, EventArgs e)
{
this.Bindboke(Convert.ToInt32(this.HiddenField2.Value));
}
protected void Button5_Click(object sender, EventArgs e)
{
int total = Convert.ToInt32(this.HiddenField2.Value);
int index = Convert.ToInt32(this.TextBox1.Text);
if (index <= total)
{
this.Bindboke(index);
}
}
存储过程:数据库名boke
ALTER PROCEDURE [dbo].[fenye]
-- Add the parameters for the stored procedure here
@pageSize int, --每页记录数量
@pageCount int output, --总页数
@pageIndex int, --当前页索引号
@strWhere varchar(8000)='' --查询条件
AS
BEGIN
declare @strSQL varchar(8000);
declare @strTmp varchar(100);
declare @strSelect varchar(4000);
declare @strOrder varchar(6000)
set @strOrder='order by id ' --排序条件
set @strSelect=' * '
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + @strSelect+' from Table1 where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) + @strSelect+' from Table1 '+ @strOrder
end
else
begin
set @strSQL = 'select top ' + str(@PageSize) + @strSelect+' from Table1
where id>(select max(id) from (select top ' + str((@PageIndex-1)*@PageSize) + ' id from Table1 ' + @strOrder + ') as tblTmp) '+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + @strSelect+' from Table1
where id>(select max(id) from
(select top ' + str((@PageIndex-1)*@PageSize) + ' id from Table1 where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
declare @recordCount int
select @recordCount=count(id) from Table1
set @pageCount= @recordCount / @pageSize
if @recordCount % @pageSize > 0
set @pageCount=@pageCount+1
print @strSQL
exec (@strSQL)
end