All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#中提供的VB不支持的新特性_.net资料_编程技术
Asp.net日期字符串格式化显示方法_[Asp.Net教程]
用PHP实现文件上传_php资料_编程技术
SQL数据操作基础(中级)8_mssql学习_编程技术
XMLHTTP对象封装技术_[XML教程]
注意那些容易被忽略的SQL注入技巧_[SQL Server教程]
ASP.NET,2.0,Web窗体语法指导_[Asp.Net教程]
SQL2000 关于 Java JDBC 驱动的安装和设定_[SQL Server教程]
asp.net2.0服务器控件之Button控件
.net,2.0中新增的nullable类型_[Asp.Net教程]
Reading number is top 10 pictures
壮丽的云彩1
Tie a large font of mouse
2012 national geographic daily picture1
Steal to eat bacon bird
The money of more than 100 countries and regions7
girl of HuNan name is LiXiang(湖南辣姐李湘的写真)
Startling Russian girl blind date scene1
Abdominal hit by iron--HangZhou best driver parking save passengers
Summer is most suitable for young people to travel in China3
世界五大海盗
Download software ranking
ASP.NET.2.0.XML.高级编程(第3版)
Popkart Cracked versions Mobile phone games
Call Of Duty2
网络管理员第三版
Unix video tutorial14
Boxer's Top ten classic battle4
天龙八部最新服务端
Call Of Duty5
Unix video tutorial12
Desire a peach blossom
aaa published in(发表于) 2013/12/8 7:50:43 Edit(编辑)
ASP.NET技巧:一个通用的分页类_.net资料_编程技术

ASP.NET技巧:一个通用的分页类_.net资料_编程技术

ASP.NET技巧:一个通用的分页类_.net资料_编程技术-你的首页-uuhomepage.com

结合一个存储过程,将分页做成最简单,请看以下源码


此分页类所操作的存储过程#region 此分页类所操作的存储过程
/**//*********************************************************
*
* 功能强大,配合以下这个存储过程
*
* *******************************************************/
/**//*
-- 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 @strSQL nvarchar(2000) -- 主语句
declare @strTmp nvarchar(1000) -- 临时变量
declare @strOrder nvarchar(1000) -- 排序类型


if @OrderType != 0
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


set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + ' where ' + @Order + '' + @strTmp + '(['
+ @Order + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @Order + '] from ' + @TableName + '' + @strOrder + ') as tblTmp)'
+ @Groupby + @strOrder


if @WhereCondition != ''
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


if @PageIndex = 1
begin
set @strTmp = ''
if @WhereCondition != ''
set @strTmp = ' where (' + @WhereCondition + ')'


set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + '' + @strTmp + ' ' + @Groupby + @strOrder
end
exec (@strSQL)
--print @strSQL


IF @WhereCondition <>''
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")


If (ts = "" Or ts Is Nothing) Then
ts = Request.QueryString("txtDate")
End If



Dim ts2 As String = Request.Form.Item("txtDate2")


If (ts2 = "" Or ts2 Is Nothing) Then
ts2 = Request.QueryString("txtDate2")
End If


Dim ps As String = Request.Form.Item("pageIndex")


If (ps = "" Or ps Is Nothing) Then
ps = Request.QueryString("pageIndex")
End If


Dim t As Integer = 2
Dim p As Integer = 1
If ts Is Nothing Then
ts = ""
End If
If ps Is Nothing Then
ps = ""
End If


If Not (ps = "") Then
p = Integer.Parse(ps)
End If


Dim pager As Pager = New Pager
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() + "条 " + pager.OutPager(pager, goUrl, False) + ""
*/
#endregion
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Text;
namespace solucky
{
/**////


/// 分页模式
///

public enum PageMode
{
/**////
/// 数字分页
///

Num =0,
/**////
/// 字符分页
///

Str =1
}
/**////
/// 分页类,能过存储过程进行分页,功能相当强大。
///


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


数据连接#region 数据连接
/**////


/// 数据连接字符串
///

private string SqlConnectionString
{
get
{
return this.sqlConnectionString;
}
set
{
this.sqlConnectionString=value;
}
}


/**////


///获取连接实例
///

///
private SqlConnection GetSqlConnectionString()
{
try
{
return new SqlConnection(SqlConnectionString);
}
catch
{
throw new Exception("SQL Connection String is invalid.");
}
}



/**////


/// 数据对象所有者
///

private string DatabaseOwner
{
get
{
return this.databaseOwner;
}
set{
this.databaseOwner=value;
}
}


#endregion


public Pager()
{
//
// TODO: 在此处添加构造函数逻辑
//
//Enum.Parse(tyo
}
public Pager(string connstr )
{
if (connstr!=null)
this.SqlConnectionString=connstr;
}
#region
/**////


/// 所要操作的存储过程名称,已有默认的分页存储过程
///

public string Procedure
{
get{
return this.procedure ;
}
set {
if (value==null || value.Length <=0)
{
this.procedure="pager";
}
else
{
this.procedure=value;
}
}
}


/**////


/// 当前所要显示的页面数
///

public int PageIndex


{
get
{
return this.pageIndex;
}
set
{
this.pageIndex = value;
}
}


/**////


/// 总的页面数
///

public int PageCount
{
get
{
return this.pageCount;
}
set
{
this.pageCount = value;
}
}


/**////


/// 总行数
///

public int RecordCount
{
get
{
return this.recordCount;
}
set
{
this.recordCount = value;
}
}


/**////


/// 每页条数
///

public int PageSize
{
get
{
return this.pageSize;
}
set
{
this.pageSize = value;
}
}


/**////


/// 表名称
///

public string TableName
{
get
{
return tableName;
}
set
{
this.tableName = value;
}
}


/**////


/// 条件查询
///

public string WhereCondition
{
get
{
return whereCondition;
}
set
{
whereCondition = value;
}
}


/**////


/// 查询目标(搜索目标),比如:AddTime AS 时间,ID AS 编号
///

public string SelectStr
{
get
{
return selectStr;
}
set
{
selectStr = value;
}
}


/**////


/// 排序的列
///

public string Order
{
get
{
return order;
}
set
{
order = value;
}
}


/**////


/// 排序类型 true:asc false:desc
///

public bool OrderType
{
get
{
return orderType;
}
set
{
orderType = value;
}
}

/**////
/// 分页模式
///

public PageMode PageMode
{
get
{
return this.pageMode;
}
set
{
this.pageMode = value;
}
}



/**////


/// 得到当前返回的数量
///

public int RowCount
{
get
{
return this.rowCount;
}
}


private string groupby;
public string Groupby
{
get
{
return this.groupby;
}
set
{
this.groupby = value;
}
}


#endregion
/**////


/// 分页查寻结果
///

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


/**////


/// 分页操作存储过程函数
///

///
///
private DataSet Pagination(ref Pager pager)
{
using ( SqlConnection myConnection = GetSqlConnectionString() )
{
SqlDataAdapter myCommand = new SqlDataAdapter(pager.databaseOwner + "."+pager.Procedure, myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;


SqlParameter parameterPageIndex = new SqlParameter("@PageIndex", SqlDbType.Int);
parameterPageIndex.Value = pager.PageIndex;
myCommand.SelectCommand.Parameters.Add(parameterPageIndex);


SqlParameter parameterPageSize = new SqlParameter("@PageSize", SqlDbType.Int);
parameterPageSize.Value = pager.PageSize;
myCommand.SelectCommand.Parameters.Add(parameterPageSize);


SqlParameter parameterRecordCount = new SqlParameter("@RecordCount", SqlDbType.Int);
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);


SqlParameter parameterWhereCondition = new SqlParameter("@WhereCondition", SqlDbType.NVarChar,500);
parameterWhereCondition.Value = pager.WhereCondition;
myCommand.SelectCommand.Parameters.Add(parameterWhereCondition);


SqlParameter parameterTableName = new SqlParameter("@TableName", SqlDbType.NVarChar,500);
parameterTableName.Value = pager.TableName;
myCommand.SelectCommand.Parameters.Add(parameterTableName);


SqlParameter parameterOrder = new SqlParameter("@Order", SqlDbType.NVarChar,500);
parameterOrder.Value = pager.Order;
myCommand.SelectCommand.Parameters.Add(parameterOrder);


SqlParameter parameterSelectStr = new SqlParameter("@SelectStr", SqlDbType.NVarChar,500);
parameterSelectStr.Value = pager.SelectStr;
myCommand.SelectCommand.Parameters.Add(parameterSelectStr);


SqlParameter parameterGroupby = new SqlParameter("@Groupby", SqlDbType.NVarChar, 100);
parameterGroupby.Value = pager.Groupby;
myCommand.SelectCommand.Parameters.Add(parameterGroupby);


SqlParameter parameterOrderType = new SqlParameter("@OrderType", SqlDbType.Bit);
parameterOrderType.Value = pager.OrderType==false?0:1;
myCommand.SelectCommand.Parameters.Add(parameterOrderType);


DataSet returnDS = new DataSet();


//SqlDataAdapter sqlDA = myCommand.crnew SqlDataAdapter(myCommand);
myCommand.Fill(returnDS);


pager.PageCount = (int)parameterPageCount.Value;
pager.RecordCount = (int)parameterRecordCount.Value;


return returnDS;
}


}

生成分页#region 生成分页
/**////


/// 生成分页格式
///

///
///
///
///
public string OutPager(Pager pager,string url,bool isBr)
{
StringBuilder returnOurWml;
if(isBr)
{
returnOurWml= new StringBuilder("["+ pager.PageCount.ToString() + "页," + pager.RecordCount.ToString() +"条]
");
}
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;


string endStr = "";



if (pager.PageCount>pagersCount)
{


//double k = ;
pagers = pager.PageIndex / pagersCount;

if (pagers == 0)
{
pagers = 1;
}
else if((pager.PageIndex % pagersCount)!=0)
{
pagers +=1;
}


endInt = pagers * pagersCount;
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 = " endStr += url + "&amp;pageIndex=" + (endInt + 1).ToString() + "\" title='第"+ (endInt + 1).ToString()+"页'>";
endStr += "&gt;&gt;";
endStr += "
";
}


if (pagers > 1)
{
returnOurWml.Append(" returnOurWml.Append(url + "&amp;pageIndex=" + (startInt - 1).ToString() + "\" title='第"+ (startInt - 1).ToString()+"页'>");
returnOurWml.Append("&lt;&lt;");
returnOurWml.Append("
");
}
}

for (i = startInt; i<=endInt;i++)
{

if (i!=pager.PageIndex)
{
returnOurWml.Append(" returnOurWml.Append(url + "&amp;pageIndex=" + i.ToString() + "\" title='第"+ i.ToString()+"页'>");
returnOurWml.Append("["+i.ToString() + "]");
returnOurWml.Append("
");
}
else
{
returnOurWml.Append(""+ i.ToString() + "");
}
}



returnOurWml.Append(endStr);



return returnOurWml.Append("
").ToString();
}
else
{
if ( pager.PageIndex > 1)
{
returnOurWml.Append(" returnOurWml.Append(url + "&amp;pageIndex=" + (pager.PageIndex -1).ToString() + "\">");
returnOurWml.Append("上一页");
returnOurWml.Append("
");
}
if (pager.PageIndex < pager.PageCount)
{
returnOurWml.Append(pager.PageIndex.ToString());
returnOurWml.Append(" returnOurWml.Append(url + "&amp;pageIndex=" + (pager.PageIndex +1).ToString() + "\">");
returnOurWml.Append("下一页");
returnOurWml.Append("
");
}
return returnOurWml.Append("
").ToString();
}
}


#endregion
}
}






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.