<webdiyer:AspNetPager
ID="AspNetPager1"
runat="server"
HorizontalAlign="Center"
OnPageChanged="AspNetPager1_PageChanged"
Width="100%"
FirstPageText="首页"
NextPageText="下一页"
PrevPageText="上一页"
LastPageText="尾页"
AlwaysShow="True"
></webdiyer:AspNetPager>

后台绑定代码:

void Bind()
{
int pageSize = ;
XieKe.BLL.Content con = new XieKe.BLL.Content();
PageBase pb = new PageBase();
pb.OrderType = ;//0 升序;1 降序
pb.PageIndex = this.AspNetPager1.CurrentPageIndex;
pb.PageSize = pageSize;
pb.ProcedureName = "pagination";
pb.StrWhere = " ";
pb.StrGetFields = "*";
pb.FldName = "id";
pb.TblName = "tb_ReceiveRecord"; int count = ;//总条数
pb.DoCount = ; //表示只获取总数
con.GetList(pb, ref count);
pb.DoCount = ; //表示获取数据
DataTable dt = con.GetList(pb, ref count).Tables[];
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind();
//数据分页
AspNetPager1.PageSize = pageSize;
AspNetPager1.RecordCount = count;
if (count <= pb.PageSize)
AspNetPager1.Visible = false;
else
AspNetPager1.Visible = true;
}

DAL层调用代码:

        /// <summary>
/// 分页获取数据列表
/// </summary>
/// <param name="pb">分页基本信息</param>
/// <param name="count">返回总条数</param>
/// <returns></returns>
public DataSet GetList(XieKe.Model.PageBase pb, ref int count)
{
SqlParameter[] parameters =
{
new SqlParameter("@tblName", SqlDbType.NVarChar, ),
new SqlParameter("@strGetFields", SqlDbType.VarChar, ),
new SqlParameter("@fldName", SqlDbType.NVarChar, ),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@PageIndex", SqlDbType.Int),
new SqlParameter("@doCount", SqlDbType.Int),
new SqlParameter("@OrderType", SqlDbType.Int),
new SqlParameter("@strWhere", SqlDbType.NVarChar,),
};
parameters[].Value = pb.TblName;
parameters[].Value = pb.StrGetFields;
parameters[].Value = pb.FldName;
parameters[].Value = pb.PageSize;
parameters[].Value = pb.PageIndex;
parameters[].Value = pb.DoCount;
parameters[].Value = pb.OrderType;
parameters[].Value = pb.StrWhere; DataSet ds = new DataSet();
ds = RunProcedure(pb.ProcedureName, parameters, "ds");
if (pb.DoCount == )
{
if (ds.Tables.Count == )
count = Convert.ToInt32(ds.Tables[].Rows[][].ToString());
}
return ds;
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
} /// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
if (parameter != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
command.Parameters.Add(parameter);
}
} return command;
}
    /// <summary>
/// 分页实体类
/// </summary>
public class PageBase
{
private string _orderName; public string OrderName
{
get { return _orderName; }
set { _orderName = value; }
} private string tblName; /// <summary>
/// 需要查询的表名 仅限单表查询
/// </summary>
public string TblName
{
get { return tblName; }
set { tblName = value; }
} private string strGetFields = "*"; /// <summary>
/// 显示字段
/// </summary>
public string StrGetFields
{
get { return strGetFields; }
set { strGetFields = value; }
}
private string fldName; /// <summary>
/// 主键名称
/// </summary>
public string FldName
{
get { return fldName; }
set { fldName = value; }
} private int pageSize = ;
/// <summary>
/// 每页显示多少记录数
/// </summary>
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
} private int pageIndex = ;
/// <summary>
/// 当前页数
/// </summary>
public int PageIndex
{
get { return pageIndex; }
set { pageIndex = value; }
}
private int doCount = ;
/// <summary>
/// 排序类型0显示记录列表,1返回总条数
/// </summary>
public int DoCount
{
get { return doCount; }
set { doCount = value; }
}
private int orderType = ; /// <summary>
/// 排序方式0正序、1倒序
/// </summary>
public int OrderType
{
get { return orderType; }
set { orderType = value; }
}
private string strWhere; /// <summary>
/// SQL语句的条件
/// </summary>
public string StrWhere
{
get { return strWhere; }
set { strWhere = value; }
}
private string procedureName;
/// <summary>
/// 存储过程名称
/// </summary>
public string ProcedureName
{
get { return procedureName; }
set { procedureName = value; }
}
}

分页所需类文件

sql存储过程:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go ALTER PROCEDURE [dbo].[pagination]
@tblName varchar(4000), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名(可包含如TABLE.FLDNAME形式)
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
declare @fldName_t varchar(255) -- 在分页时用的排序字段名,不包含多表并列时的表名
set @fldName_t = right(@fldName,len(@fldName) - CHARINDEX('.',@fldName))
if @doCount != 0
begin
if @strWhere !=''
set @strSQL = 'select count(*) as Total from (select '+ @strGetFields +' from ' + @tblName + ' where '+@strWhere +') as A' --该写法解决带 group by 的问题
else
set @strSQL = 'select count(*) as Total from (select '+ @strGetFields +' from ' + @tblName + ') as A'
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @fldName +' desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @fldName +' asc'
end
if @PageIndex = 1 or @PageIndex=0
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
if @strWhere != ''
set @strSQL='select * from
(select top 100 percent Row_Number() over('+ @strOrder + ') as num,'+@strGetFields+ ' from '+ @tblName + ' where ' + @strWhere + ' )as tb_temp
where tb_temp.num between ' + str(((@PageIndex-1)*@PageSize)+1) + ' and ' + str(@PageIndex*@PageSize) + ' ' + @strOrder
else
set @strSQL='select * from
(select top 100 percent Row_Number() over('+ @strOrder + ') as num,'+@strGetFields+ ' from '+ @tblName + ' )as tb_temp
where tb_temp.num between ' + str(((@PageIndex-1)*@PageSize)+1) + ' and ' + str(@PageIndex*@PageSize) + ' ' + @strOrder
end
end
exec (@strsql)

Repeater控件的分页效果的更多相关文章

  1. Repeater控件的分页实现

    本文讲解Repeater控件与PagedDataSource相结合实现其分页功能.PagedDataSource 类封装那些允许数据源控件(如 DataGrid.GridView)执行分页操作的属性. ...

  2. repeater控件实现分页

    repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果. 分页分为真分页和假分页. 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都 ...

  3. ASP.NET Repeater控件实现简单分页

    早上,有看MSDN,看到了 PagedDataSource 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.pa ...

  4. 使用Repeater控件实现三层嵌套以及分页效果

    PS: 第一次用Repeater控件 记录一下 请忽略我的命名不规范  请忽略我的最终效果图(太丑了) 需要用到的朋友可以自行调整的漂亮点 ====================最终效果图===== ...

  5. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...

  6. Repeater控件使用(含删除,分页功能)

    Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ ...

  7. (转) .NET实现Repeater控件+AspNetPager控件分页

    SqlConnection (.NET C#) 连接及分页 .net的访问数据机制决定了访问大量数据时会致使客户端机器消耗大量资源,因此有必要对数据进行分页显示,开发工具vs.net+sqlserve ...

  8. repeater控件自定义Url分页带参数

    repeater控件的效果图如下: 该页面实现的功能如下: 1.上下分页,(也可以带首页和末页,我只是禁掉了没用) 2.根据用户输入的指定分页索引进行跳转 3.根据筛选数据的参数进行URL分页的参数传 ...

  9. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

随机推荐

  1. iOS开发 画六边形(多边形)

    - (void)drawRect:(CGRect)rect { UIBezierPath * path = [UIBezierPath bezierPath]; [path moveToPoint:C ...

  2. 鸟哥的linux私房菜勘误表

    博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://ww ...

  3. gulp-webpack工程化实现electron

    参考网站: https://www.npmjs.com/package/babel-loader https://www.npmjs.com/package/gulp https://www.npmj ...

  4. (转)Android APK反编译详解

    转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...

  5. Java线程(一):线程安全与不安全

    作为一个Java Web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了.记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT.Socket.多线程.I/O,编写的 ...

  6. java中的异常和处理

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  7. HDUOJ----1234 开门人和关门人(浙江大学考研题)

    开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  8. 关于C语言和汇编语言相互嵌套调用

    1.C嵌套汇编 首先说一下关于GCC编译嵌有汇编语言的c语言吧,GCC编译的汇编语言不是我们上课时学的Intel x86汇编,而是AT&T汇编,两者的区别可以查看<Gcc使用的内嵌汇编语 ...

  9. linux查看是否已安装GCC及安装GCC

    输入:gcc -v;如果提示未找到命令即表示没有安装 使用:yum install gcc即可

  10. 下载模板,上传EXCEL

    说道SAP里对EXCEL操作的大概就是上传,下载,显示了... 下载:(文档是通过SMW0上传的)注:如果下载的时候需要填充EXCEL的值,...请参考另一篇文档,OLE CALL METHOD CL ...