存储过程:

代码
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--参数说明-------------------------------------------------------------
/**//*
@strTable --要显示的表或多个表的连接
@strField --要查询出的字段列表,*表示全部字段
@intTop --最多读取记录数
@pageSize --每页显示的记录个数
@pageIndex --要显示那一页的记录
@strWhere --查询条件,不需where
@strSortKey --用于排序的主键
@strSortField --用于排序,如:id desc (多个id desc,dt asc)
@strOrderBy --排序,0-顺序,1-倒序
@pageCount --查询结果分页后的总页数
@RecordCount --查询到的总记录数
@UsedTime --耗时测试时间差
*/
CREATE PROCEDURE [dbo].[ThePagerIndex]
@strTable varchar(
50) = '[dbo].[ttable]',
@strField varchar(
50) = '*',
@intTop
int = 5000,
@pageSize
int = 20,
@pageIndex
int = 1,
@strWhere varchar(
50) = '1=1',
@strSortKey varchar(
50) = 'id',
@strSortField varchar(
50) = 'id DESC',
@strOrderBy bit
= 1,
@pageCount
int OUTPUT,
@RecordCount
int OUTPUT
--@UsedTime int OUTPUT
AS
SET NOCOUNT ON
Declare @sqlcount INT
Declare @timediff DATETIME
select @timediff
=getdate()
Begin Tran
DECLARE @sql nvarchar(max),@where1 varchar(max),@where2 varchar(max)
IF @strWhere
is null or rtrim(@strWhere)=''
BEGIN
--没有查询条件
SET @where1
=' WHERE '
SET @where2
=' '
END
ELSE
BEGIN
--有查询条件
SET @where1
=' WHERE ('+@strWhere+') AND ' --本来有条件再加上此条件
SET @where2
=' WHERE ('+@strWhere+') ' --原本没有条件而加上此条件
END
--SET @sql='SELECT @intResult=COUNT(*) FROM '+@strTable+@where2
IF @intTop
<=0
BEGIN
SET @sql
='SELECT @sqlcount=COUNT(*) FROM (select '+@strSortKey+' from '+ @strTable + @where2 +') As tmptab'
END
ELSE
BEGIN
SET @sql
='SELECT @sqlcount=COUNT(*) FROM (select top '+ cast(@intTop as varchar(max)) +' '+@strSortKey+' from '+ @strTable + @where2 +') As tmptab'
END
--print @sql

EXEC sp_executesql @sql,N
'@sqlcount int OUTPUT',@sqlcount OUTPUT --计算总记录数
SELECT @pageCount
=CEILING((@sqlcount+0.0)/@pageSize) --计算总页数
SELECT @RecordCount
= @sqlcount --设置总记录数
IF @pageIndex
=1 --第一页
BEGIN
SET @sql
='SELECT TOP '+CAST(@pageSize AS varchar(max))+' '+@strField+' FROM '+@strTable+
@where2
+'ORDER BY '+ @strSortField
END
Else
BEGIN
IF @strOrderBy
=0
SET @sql
='SELECT TOP '+CAST(@pageSize AS varchar(max))+' '+@strField+ ' FROM '+@strTable+@where1+@strSortKey+'>(SELECT MAX('+@strSortKey+') '+ ' FROM (SELECT TOP '+CAST(@pageSize*(@pageIndex-1) AS varchar(max))+' '+
@strSortKey
+' FROM '+@strTable+@where2+'ORDER BY '+@strSortField+') t) ORDER BY '+@strSortField
ELSE
SET @sql
='SELECT TOP '+CAST(@pageSize AS varchar(max))+' '+@strField+' FROM '+@strTable+@where1+@strSortKey+'<(SELECT MIN('+@strSortKey+') '+ ' FROM (SELECT TOP '+CAST(@pageSize*(@pageIndex-1) AS varchar(max))+' '+
@strSortKey
+' FROM '+@strTable+@where2+'ORDER BY '+@strSortField+') t) ORDER BY '+@strSortField+''
END
EXEC(@sql)
--print @sql
If @@Error
<> 0
Begin
RollBack Tran
Return
-1
End
Else
Begin
Commit TRAN
--set @UsedTime = datediff(ms,@timediff,getdate())
--select datediff(ms,@timediff,getdate()) as 耗时
Return @sqlcount
End


实体对象类:

代码
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

/// <summary>
///Question_model 的摘要说明
/// </summary>
public class Question_model
{
public Question_model()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
int qid;

public int Qid
{
get { return qid; }
set { qid = value; }
}
string qtitle;

public string Qtitle
{
get { return qtitle; }
set { qtitle = value; }
}

}

 

 数据访问层 Question_bll.cs类

代码
public IList<Question_model> GetPage(int pageindex, int _pageSize, out int pageCount, out int RecordCount)
{
pageCount
= 0;
RecordCount
= 0;
IList
<Question_model> list = new List<Question_model>();
using (SqlConnection conn = new SqlConnection(PubConstant.ConnectionString))
{
SqlCommand objcmd
= new SqlCommand(".ThePagerIndex", conn);

objcmd.CommandType
= CommandType.StoredProcedure;

SqlParameter[] para
={

new SqlParameter("@strTable",SqlDbType.VarChar,-1),

new SqlParameter("@strField",SqlDbType.VarChar,-1),

new SqlParameter("@pageSize",SqlDbType.Int),

new SqlParameter("@pageIndex",SqlDbType.Int),

new SqlParameter("@strSortKey",SqlDbType.VarChar,-1),

new SqlParameter("@strSortField",SqlDbType.VarChar,-1),

new SqlParameter("@strOrderBy",SqlDbType.Bit),

new SqlParameter("@pageCount",SqlDbType.Int),

new SqlParameter("@RecordCount",SqlDbType.Int),

new SqlParameter("@inttop",SqlDbType.Int,-1)

};

para[
0].Value = "question";

para[
1].Value = "*";

para[
2].Value = _pageSize;

para[
3].Value = pageindex;

para[
4].Value = "qid";

para[
5].Value = "qtime desc";

para[
6].Value = 1;

para[
7].Value = pageCount;

para[
7].Direction = ParameterDirection.Output;

para[
8].Value = RecordCount;

para[
8].Direction = ParameterDirection.Output;

para[
9].Value = -1;

objcmd.Parameters.AddRange(para);

conn.Open();

using (SqlDataReader reader = objcmd.ExecuteReader(CommandBehavior.CloseConnection))
{

while (reader.Read())

{

Question_model model
= new Question_model();

model.Qid
= Convert.ToInt32(reader["qid"]);

model.Qtitle
= Convert.ToString(reader["qtitle"]);

list.Add(model);
}

}
RecordCount
= Convert.ToInt32(objcmd.Parameters["@RecordCount"].Value);
pageCount
= Convert.ToInt32(objcmd.Parameters["@pageCount"].Value);
conn.Close();

conn.Dispose();

}
return list;
}


aspx代码:

代码
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
分页测试
<br />
</HeaderTemplate>
<ItemTemplate>
<span style="width:100">编号:<%#Eval("qid")%>&nbsp;&nbsp;&nbsp;&nbsp;<%#Eval("qtitle")%></span><br />
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblFooterTemplate" runat="server" Text="无相关数据" Visible="<%#bool.Parse((Repeater1.Items.Count==0).ToString())%>"></asp:Label>
</FooterTemplate>
</asp:Repeater>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="PageChanged" FirstPageText="首页" LastPageText="尾页"
NextPageText
="下一页" PrevPageText="上一页" ShowInputBox="Always" Font-Size="13px" ShowPageIndexBox="Never" PageSize="5">
</webdiyer:AspNetPager>
</div>


aspx.cs代码:

代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Page_Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Bind();
}
}

private readonly Question_bll bll = new Question_bll();

int currPage = 1;
int PageSize = 5;

public void Bind()
{

int pageCount;
int RecordCount;

Repeater1.DataSource
= bll.GetPage(currPage, PageSize, out pageCount, out RecordCount);

Repeater1.DataBind();

this.AspNetPager1.RecordCount = RecordCount;

this.AspNetPager1.CurrentPageIndex = currPage;

this.AspNetPager1.PageSize = PageSize;

}
protected void PageChanged(object sender, EventArgs e)
{

int pageCount;
int RecordCount;

Repeater1.DataSource
= bll.GetPage(this.AspNetPager1.CurrentPageIndex, PageSize, out pageCount, out RecordCount);

Repeater1.DataBind();

}
}


转载:http://hi.baidu.com/wwaityuan/blog/item/4ef3c10bb81d0e32b0351d21.html

相关文章:

  • 2022-12-23
  • 2021-12-19
  • 2021-08-03
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
  • 2022-12-23
  • 2021-06-26
  • 2021-06-02
相关资源
相似解决方案