<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. Java JTable 表格 获取存储路径,文件名 ,导出excel表格

    在做计量泵上位机软件时,需要将下位机传上来的数据,存入MYSQL数据库,显示在java 上位机界面上,并能导出至电脑指定位置. 选择存储路径和文件名: // 处理另存文件的菜单 public void ...

  2. samba服务器搭建

    为实现windows与linux资源共享,搭建一个samba服务器:这个我也是探索了一段时间. 找到一篇写得比较清楚的博客: http://yangxuejun.blog.51cto.com/6239 ...

  3. contains

    ArrayLIst类使用contains方法时要注意:放入ArrayList中的类必须要重写equals方法(既然equals重写了,那么 hash方法也应该重写,这两个方法一般同时重写):如果不重写 ...

  4. idea+git

    http://www.cnblogs.com/java-maowei/p/5950930.html

  5. this和call

    function foo(x){ console.log(x);} foo.call(this,'abc');console.log(this); ---- abc

  6. Selenium Grid Configuration

    Start Hub and Node with Json config 1. Start Hub with json config file title HubWebDriver java -jar ...

  7. servlet 文件上传简易版

    package cn.itcast.servlet; import java.io.File;import java.io.IOException;import java.util.List; imp ...

  8. 关于eclipse中maven项目的问题

    问题1: 严重: Error configuring application listener of class org.springframework.web.context.ContextLoad ...

  9. node环境下处理get post

    前言:今天刚学get,post.这里只是几下今天的理解.so文章只供新手参考. 编译器是webstorm 搭建后服务器后(具体请查看上篇文章) 在routes文件夹下的index.js文件中写入 如图 ...

  10. jmeter 使用URL重写处理用户会话

    如果您的web应用程序使用URL重写而不是cookie保存会话信息, 那么你需要做一些额外的工作来测试你的网站. 正确应对URL重写,JMeter需要解析HTML 接收从服务器和检索独特的会话ID,使 ...