<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. maven install 报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project*****

    [ERROR]Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-co ...

  2. 常用SQL语句(交互)

    %-------通配符 select * from [EMoney_Club].[dbo].[GoldIdea_AdviceCollect] where [Content] like '%昵称%' s ...

  3. 《C#开发微信门户及应用》

    C#开发微信门户及应用(40)--使用微信JSAPI实现微信支付功能 C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能 C#开发微信门户及应用(38)--微信摇一摇红包功能 C#开发 ...

  4. ie8 table td拆分宽度不适应问题

    在table上加style="table-layout: fixed;"并在首行加一个高度为0且给定宽度的tr <table class="subtabledeta ...

  5. Qt之QCustomPlot(图形库)

    简述 QCustomPlot是一个基于Qt C++的图形库,用于绘制和数据可视化 - 制作漂亮的2D图 - 曲线图.趋势图.坐标图.柱状图等,并为实时可视化应用程序提供高性能服务.它没有进一步的依赖关 ...

  6. iOS开发数据库SQLite的使用

    iOS系统自带Core Data来进行持久化处理,而且Core Data可以使用图形化界面来创建对象,但是Core Data不是关系型数据库,对于Core Data来说比较擅长管理在设备上创建的数据持 ...

  7. (16)odoo8 API 指南

    http://odoo-new-api-guide-line.readthedocs.org/en/latest/index.html

  8. javamail 学习及实例

    JavaMail,是Sun发布的用来处理email的API,提供给开发者处理电子邮件相关的编程接口.通过使用它可以方便地执行一些常用的邮件传输. 可以看下<java邮件开发详解>第四章和第 ...

  9. [转载]ME51n,ME52n,ME53n屏幕增强

    原文地址:ME51n,ME52n,ME53n屏幕增强作者:cyzhang811 http://blog.sina.com.cn/s/blog_721b218c0100zch9.html 使用增强:ME ...

  10. kafka技术要点

    转载:http://blog.csdn.net/caisini_vc/article/details/48007297 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为 ...