结合一个存储过程,将分页做成最简单,请看以下源码 此分页类所操作的存储过程#region 此分页类所操作的存储过程 declare @strSQL nvarchar(2000) — 主语句 if @OrderType != 0 set @strSQL = select top + str(@PageSize) + + @SelectStr + from if @WhereCondition != if @PageIndex = 1 set @strSQL = select top + str(@PageSize) + + @SelectStr + from IF @WhereCondition <> If (ts = “” Or ts Is Nothing) Then If (ts2 = “” Or ts2 Is Nothing) Then Dim ps As String = Request.Form.Item(“pageIndex”) If (ps = “” Or ps Is Nothing) Then Dim t As Integer = 2 If Not (ps = “”) Then Dim pager As Pager = New Pager 数据连接#region 数据连接 /**//// <summary> #endregion public Pager() /**//// <summary> { /**//// <summary> /**//// <summary> /**//// <summary> /**//// <summary> /**//// <summary> /**//// <summary> /**//// <summary> /**//// <summary> private string groupby; #endregion /**//// <summary> SqlParameter parameterPageIndex = new SqlParameter(“@PageIndex”, SqlDbType.Int); SqlParameter parameterPageSize = new SqlParameter(“@PageSize”, SqlDbType.Int); SqlParameter parameterRecordCount = new SqlParameter(“@RecordCount”, SqlDbType.Int); SqlParameter parameterWhereCondition = new SqlParameter(“@WhereCondition”, SqlDbType.NVarChar,500); SqlParameter parameterTableName = new SqlParameter(“@TableName”, SqlDbType.NVarChar,500); SqlParameter parameterOrder = new SqlParameter(“@Order”, SqlDbType.NVarChar,500); SqlParameter parameterSelectStr = new SqlParameter(“@SelectStr”, SqlDbType.NVarChar,500); SqlParameter parameterGroupby = new SqlParameter(“@Groupby”, SqlDbType.NVarChar, 100); SqlParameter parameterOrderType = new SqlParameter(“@OrderType”, SqlDbType.Bit); DataSet returnDS = new DataSet(); //SqlDataAdapter sqlDA = myCommand.crnew SqlDataAdapter(myCommand); pager.PageCount = (int)parameterPageCount.Value; return returnDS; } string endStr = “”; //double k = ; endInt = pagers * pagersCount; if (pagers > 1) #endregion
/**//*********************************************************
*
* 功能强大,配合以下这个存储过程
*
* *******************************************************/
/**//*
— Pager 1,10,0,0, EmployeeID>2 and EmployeeID<5 , Employees,*,LastName,0
CREATE PROCEDURE Pager
@PageIndex int,–索引页 1
@PageSize int,–每页数量2
@RecordCount int out,–总行数3
@PageCount int out,–总页数4
@WhereCondition Nvarchar(1000),–查询条件5
@TableName nvarchar(500),–查询表名6
@SelectStr nvarchar(500) = *,–查询的列7
@Order nvarchar(500),–排序的列8
@OrderType bit = 0, — 设置排序类型, 非 0 值则降序 9
@Groupby NVarChar(100) =
AS
declare @strTmp nvarchar(1000) — 临时变量
declare @strOrder nvarchar(1000) — 排序类型
begin
set @strTmp = <(select min
set @strOrder = order by + @Order + desc
end
else
begin
set @strTmp = >(select max
set @strOrder = order by + @Order + asc
end
+ @TableName + where + @Order + + @strTmp + ([
+ @Order + ]) from (select top + str((@PageIndex-1)*@PageSize) + [
+ @Order + ] from + @TableName + + @strOrder + ) as tblTmp)
+ @Groupby + @strOrder
set @strSQL = select top + str(@PageSize) + + @SelectStr + from
+ @TableName + where + @Order + + @strTmp + ([
+ @Order + ]) from (select top + str((@PageIndex-1)*@PageSize) + [
+ @Order + ] from + @TableName + where ( + @WhereCondition + )
+ @strOrder + ) as tblTmp) and ( + @WhereCondition + ) + @Groupby + @strOrder
begin
set @strTmp =
if @WhereCondition !=
set @strTmp = where ( + @WhereCondition + )
+ @TableName + + @strTmp + + @Groupby + @strOrder
end
exec (@strSQL)
–print @strSQL
Begin
SET @strTmp = SELECT -1 FROM + @TableName + Where + (@WhereCondition)
End
ELSE
Begin
SET @strTmp = SELECT -1 FROM + @TableName
End
EXEC SP_EXECUTESQL @strTmp
SET @RecordCount = @@RowCount
— 获取总页数
— “CEILING”函数:取得不小于某数的最小整数
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
GO
*****************************************************************************/
/**//****************************************************************************
*
* 用法
*
* ***************************************************************************/
/**//*
Dim ts As String = Request.Form.Item(“txtDate”)
ts = Request.QueryString(“txtDate”)
End If
Dim ts2 As String = Request.Form.Item(“txtDate2”)
ts2 = Request.QueryString(“txtDate2”)
End If
ps = Request.QueryString(“pageIndex”)
End If
Dim p As Integer = 1
If ts Is Nothing Then
ts = “”
End If
If ps Is Nothing Then
ps = “”
End If
p = Integer.Parse(ps)
End If
pager.PageIndex = p
pager.PageSize = 20
pager.PageMode = PageMode.Str
pager.WhereCondition = “TheDate between convert(datetime,” + ts + “) and convert(datetime,” + ts2 + “)”
pager.WhereCondition = ” convert(char(10),TheDate,120)= ” + ts + “”
pager.TableName = “LoadCountlog”
pager.SelectStr = “*”
pager.Order = “ID”
pager.OrderType = False
Dim dt As System.Data.DataTable = pager.GetDatas(p)
myDataGrid.DataSource = dt
myDataGrid.DataBind()
Dim goUrl As String = “WebForm1.aspx?txtDate=” + ts + “&txtDate2=” + ts2
Me.Label3.Text = “共:” + pager.PageCount.ToString + “页,” + pager.RecordCount.ToString() + “条 <strong>” + pager.OutPager(pager, goUrl, False) + “</strong>”
*/
#endregion
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Text;
namespace solucky
{
/**//// <summary>
/// 分页模式
/// </summary>
public enum PageMode
{
/**//// <summary>
/// 数字分页
/// </summary>
Num =0,
/**//// <summary>
/// 字符分页
/// </summary>
Str =1
}
/**//// <summary>
/// 分页类,能过存储过程进行分页,功能相当强大。
/// </summary>
public class Pager
{
private int pageIndex = 0;
private int recordCount = 0;
private int pageSize = 20;
private int pageCount = 0;
private int rowCount = 0;
private string tableName = “”;
private string whereCondition = “1=1”;
private string selectStr = “*”;
private string order = “”;
private string procedure =”pager”;
private bool orderType = true;
private PageMode pageMode =PageMode.Num;
private string sqlConnectionString = ConfigurationSettings.AppSettings[“database”];
private string databaseOwner = “dbo”;
/**//// <summary>
/// 数据连接字符串
/// </summary>
private string SqlConnectionString
{
get
{
return this.sqlConnectionString;
}
set
{
this.sqlConnectionString=value;
}
}
///获取连接实例
/// </summary>
/// <returns></returns>
private SqlConnection GetSqlConnectionString()
{
try
{
return new SqlConnection(SqlConnectionString);
}
catch
{
throw new Exception(“SQL Connection String is invalid.”);
}
}
/**//// <summary>
/// 数据对象所有者
/// </summary>
private string DatabaseOwner
{
get
{
return this.databaseOwner;
}
set{
this.databaseOwner=value;
}
}
{
//
// TODO: 在此处添加构造函数逻辑
//
//Enum.Parse(tyo
}
public Pager(string connstr )
{
if (connstr!=null)
this.SqlConnectionString=connstr;
}
#region
/**//// <summary>
/// 所要操作的存储过程名称,已有默认的分页存储过程
/// </summary>
public string Procedure
{
get{
return this.procedure ;
}
set {
if (value==null || value.Length <=0)
{
this.procedure=”pager”;
}
else
{
this.procedure=value;
}
}
}
/// 当前所要显示的页面数
/// </summary>
public int PageIndex
get
{
return this.pageIndex;
}
set
{
this.pageIndex = value;
}
}
/// 总的页面数
/// </summary>
public int PageCount
{
get
{
return this.pageCount;
}
set
{
this.pageCount = value;
}
}
/// 总行数
/// </summary>
public int RecordCount
{
get
{
return this.recordCount;
}
set
{
this.recordCount = value;
}
}
/// 每页条数
/// </summary>
public int PageSize
{
get
{
return this.pageSize;
}
set
{
this.pageSize = value;
}
}
/// 表名称
/// </summary>
public string TableName
{
get
{
return tableName;
}
set
{
this.tableName = value;
}
}
/// 条件查询
/// </summary>
public string WhereCondition
{
get
{
return whereCondition;
}
set
{
whereCondition = value;
}
}
/// 查询目标(搜索目标),比如:AddTime AS 时间,ID AS 编号
/// </summary>
public string SelectStr
{
get
{
return selectStr;
}
set
{
selectStr = value;
}
}
/// 排序的列
/// </summary>
public string Order
{
get
{
return order;
}
set
{
order = value;
}
}
/// 排序类型 true:asc false:desc
/// </summary>
public bool OrderType
{
get
{
return orderType;
}
set
{
orderType = value;
}
}
/**//// <summary>
/// 分页模式
/// </summary>
public PageMode PageMode
{
get
{
return this.pageMode;
}
set
{
this.pageMode = value;
}
}
/**//// <summary>
/// 得到当前返回的数量
/// </summary>
public int RowCount
{
get
{
return this.rowCount;
}
}
public string Groupby
{
get
{
return this.groupby;
}
set
{
this.groupby = value;
}
}
/**//// <summary>
/// 分页查寻结果
/// </summary>
public DataTable GetDatas(int pageIndex)
{
this.pageIndex = pageIndex;
Pager pager = this;
//pager.pageIndex = pageIndex;
DataTable returnTb = Pagination(ref pager).Tables[0];
this.rowCount = returnTb.Rows.Count;
return returnTb;
}
/// 分页操作存储过程函数
/// </summary>
/// <param name=”pager”></param>
/// <returns></returns>
private DataSet Pagination(ref Pager pager)
{
using ( SqlConnection myConnection = GetSqlConnectionString() )
{
SqlDataAdapter myCommand = new SqlDataAdapter(pager.databaseOwner + “.”+pager.Procedure, myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
parameterPageIndex.Value = pager.PageIndex;
myCommand.SelectCommand.Parameters.Add(parameterPageIndex);
parameterPageSize.Value = pager.PageSize;
myCommand.SelectCommand.Parameters.Add(parameterPageSize);
parameterRecordCount.Value = 0;
parameterRecordCount.Direction = ParameterDirection.InputOutput;
myCommand.SelectCommand.Parameters.Add(parameterRecordCount);
SqlParameter parameterPageCount = new SqlParameter(“@PageCount”, SqlDbType.Int);
parameterPageCount.Value = 0;
parameterPageCount.Direction = ParameterDirection.InputOutput;
myCommand.SelectCommand.Parameters.Add(parameterPageCount);
parameterWhereCondition.Value = pager.WhereCondition;
myCommand.SelectCommand.Parameters.Add(parameterWhereCondition);
parameterTableName.Value = pager.TableName;
myCommand.SelectCommand.Parameters.Add(parameterTableName);
parameterOrder.Value = pager.Order;
myCommand.SelectCommand.Parameters.Add(parameterOrder);
parameterSelectStr.Value = pager.SelectStr;
myCommand.SelectCommand.Parameters.Add(parameterSelectStr);
parameterGroupby.Value = pager.Groupby;
myCommand.SelectCommand.Parameters.Add(parameterGroupby);
parameterOrderType.Value = pager.OrderType==false?0:1;
myCommand.SelectCommand.Parameters.Add(parameterOrderType);
myCommand.Fill(returnDS);
pager.RecordCount = (int)parameterRecordCount.Value;
}
生成分页#region 生成分页
/**//// <summary>
/// 生成分页格式
/// </summary>
/// <param name=”pager”></param>
/// <param name=”url”></param>
/// <param name=”isBr”></param>
/// <returns></returns>
public string OutPager(Pager pager,string url,bool isBr)
{
StringBuilder returnOurWml;
if(isBr)
{
returnOurWml= new StringBuilder(“[“+ pager.PageCount.ToString() + “页,” + pager.RecordCount.ToString() +”条]<br/>”);
}
else
{
returnOurWml = new StringBuilder();
}
if (pager.PageMode == PageMode.Num)
{
//分页每行显示的数量
int pagersCount = 10;
int pagers = 0;
int startInt = 1;
int endInt = pager.PageCount;
int i = 1;
if (pager.PageCount>pagersCount)
{
pagers = pager.PageIndex / pagersCount;
if (pagers == 0)
{
pagers = 1;
}
else if((pager.PageIndex % pagersCount)!=0)
{
pagers +=1;
}
if (pager.PageIndex <= endInt)
{
startInt = endInt +1 – pagersCount;
if (startInt <1)
{
startInt = 1;
}
}
//显示数量不足时pagersCount
if (endInt>=pager.PageCount)
{
endInt = pager.PageCount;
}
else
{
//if (pager.PageIndex)
endStr = ” <a href=\””;
endStr += url + “&pageIndex=” + (endInt + 1).ToString() + “\” title=第”+ (endInt + 1).ToString()+”页>”;
endStr += “>>”;
endStr += “</a> “;
}
{
returnOurWml.Append(” <a href=\””);
returnOurWml.Append(url + “&pageIndex=” + (startInt – 1).ToString() + “\” title=第”+ (startInt – 1).ToString()+”页>”);
returnOurWml.Append(“<<”);
returnOurWml.Append(“</a> “);
}
}
for (i = startInt; i<=endInt;i++)
{
if (i!=pager.PageIndex)
{
returnOurWml.Append(” <a href=\””);
returnOurWml.Append(url + “&pageIndex=” + i.ToString() + “\” title=第”+ i.ToString()+”页>”);
returnOurWml.Append(“[“+i.ToString() + “]”);
returnOurWml.Append(“</a> “);
}
else
{
returnOurWml.Append(“<u>”+ i.ToString() + “</u>”);
}
}
returnOurWml.Append(endStr);
return returnOurWml.Append(“<br/>”).ToString();
}
else
{
if ( pager.PageIndex > 1)
{
returnOurWml.Append(” <a href=\””);
returnOurWml.Append(url + “&pageIndex=” + (pager.PageIndex -1).ToString() + “\”>”);
returnOurWml.Append(“上一页”);
returnOurWml.Append(“</a> “);
}
if (pager.PageIndex < pager.PageCount)
{
returnOurWml.Append(pager.PageIndex.ToString());
returnOurWml.Append(” <a href=\””);
returnOurWml.Append(url + “&pageIndex=” + (pager.PageIndex +1).ToString() + “\”>”);
returnOurWml.Append(“下一页”);
returnOurWml.Append(“</a> “);
}
return returnOurWml.Append(“<br/>”).ToString();
}
}
}
}
http://www.cnblogs.com/solucky/archive/2006/09/20/509741.html
一个通用的分页类_asp.net技巧
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个通用的分页类_asp.net技巧
相关推荐
-      对.net framework 反射的反思_asp.net技巧
-      .net3.5和vs2008中的asp.net ajax_asp.net技巧
-      使用asp.net ajax框架扩展html map控件_asp.net技巧
-      asp.net应用程序资源访问安全模型_asp.net技巧
-      photoshop初学者轻松绘制螺旋漩涡特效_photoshop教程
-      photoshop通道结合图层模式抠狗尾巴草_photoshop教程
-      web.config详解+asp.net优化_asp.net技巧
-      asp.net中多彩下拉框的实现_asp.net技巧