求GridView用储存过程做分页的完整C#代码

hongt7 2008-07-07 05:10:48
求GridView用储存过程做分页的完整C#代码 最好有例子
...全文
49 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsx3000 2008-07-07
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;
using DataBase;
using System.Data;
using System.Data.SqlClient;

namespace WebDal
{
/// <summary>
/// 分页类
/// </summary>
public class Pagination
{
#region 字段
private int _PageSize = 12;//每页记录数
private string _TableName="";//表名
private int _TableSize=0;//总记录数
private int _Pages=0;//总页数
private int _Page=1;//当前页
private Taxis Tax=Taxis.ASC;
private string _OrderBy ="desc";//排序方式
private string _FldName="ID";//排序字段
private string _Condition="";//查询条件
#endregion



#region 属性
/// <summary>
/// 设置每页记录数
/// </summary>
public int PageSize
{
set
{
_PageSize = value;
init();
}
get { return _PageSize; }
}
/// <summary>
/// 设置分页表名称
/// </summary>
public string TableName
{
set
{
_TableName = value;
init();
}
get { return _TableName; }
}
/// <summary>
/// 总记录数
/// </summary>
public int DataSisz
{
get { return _TableSize; }
}
/// <summary>
/// 总页数
/// </summary>
public int Pages
{
get { return _Pages; }
}
/// <summary>
/// 设置排序方式
/// </summary>
public Taxis Orderby
{
set
{
// _OrderBy = value;
Tax = value;
if (Tax == Taxis.DESC)
{
_OrderBy = "DESC";
}
else if (Tax == Taxis.ASC)
{
_OrderBy = "ASC";
}
}
}
/// <summary>
/// 设置排序字段
/// </summary>
public string FldName
{
set { _FldName = value; }
}
/// <summary>
/// 设置或获取当前页
/// </summary>
public int NowPage
{
set { _Page = value; }
get { return _Page; }
}
/// <summary>
/// 设置查询条件
/// </summary>
public string Condition
{
set
{
_Condition = value;
init();
}
}
#endregion



#region 构造
/// <summary>
/// 带1个参数的构造函数
/// </summary>
/// <param name="TableName">需查询表名</param>
public Pagination(string TableName)
{
init();
}
/// <summary>
/// 带2个参数的构造函数
/// </summary>
/// <param name="TableName">需查询表名</param>
/// <param name="PageSize">每页的记录数</param>
public Pagination()
{
///构造
}
#endregion



#region 方法
/// <summary>
/// 初始化
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="PageSize">每页记录数</param>
private void init()
{
//_TableName = TableName;
//_PageSize = PageSize;
string strSql;
if(_Condition=="")
strSql="select count(*) from " + _TableName;
else
strSql="select count(*) from " + _TableName+" where "+_Condition;
DataSet ds = SqlDataBase.ExecDataSet(strSql);
string aa = ds.Tables[0].Rows[0][0].ToString();
_TableSize =Convert.ToInt32(aa);
if (_TableSize / PageSize < 1)
{
_Pages = 1;
}
else
{
if (_TableSize % PageSize == 0)
{
_Pages = _TableSize / PageSize;
}
else
{
_Pages = _TableSize / PageSize + 1;
}
}

}

public DataSet ExecPage()
{
SqlParameter []param ={ new SqlParameter("@TableName", SqlDbType.NVarChar),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@Page", SqlDbType.Int),
new SqlParameter("@OrderBy",SqlDbType.NVarChar),
new SqlParameter("@FldName",SqlDbType.NVarChar),
new SqlParameter("@Condition",SqlDbType.NVarChar)};
param[0].Value = _TableName;
param[1].Value = _PageSize;
param[2].Value = _Page;
param[3].Value = _OrderBy;
param[4].Value = _FldName;
param[5].Value = _Condition;
DataSet ds= SqlDataBase.ExecDataSet("SP_Page",param);
return ds;
}
#endregion
}



/// <summary>
/// sql枚举排序方式
/// </summary>
public enum Taxis
{
ASC = 0,
DESC = 1
}
}








CREATE PROCEDURE [dbo].[SP_Page]
@TableName nvarchar(50),--表名
@pagesize int, --每页记录数
@page int, --指定页
@OrderBy Nvarchar(10)='desc',--排序方式
--@pages int OUTPUT,--总页数
@Annal int=null,
@FldName nvarchar(50),--要排序字段
@Condition nvarchar(500),--查询条件
@tmpCondition nvarchar(500)=''
AS
BEGIN

if @Condition<>''
BEGIN
set @tmpCondition=' where '+@Condition
set @Condition=@Condition+' and'
END


set @Annal=@pagesize*(@page-1)

set @tmpCondition='select top '+cast(@pagesize as varchar(20))+' * from '+@TableName+
' where '+ @Condition+' ('+@fldName+' not in (select top '+
cast(@Annal as varchar(20)) +' '+@fldName+' from '+@TableName+@tmpCondition+
' order by '+@fldName+' '+@OrderBy+')) order by '+@fldName+' '+@OrderBy
exec(@tmpCondition)
END

GO





-----------------------------
我的第一次写分页,希望高手门可以指点一二

62,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧