AspNetPager分页控件的使用

本文介绍了一个SQL Server中实现分页查询的存储过程UP_GetRecordByPageOrder,该过程允许用户通过输入表名、字段名等参数进行灵活的分页查询,并提供了按不同字段排序的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建存储过程   UP_GetRecordByPageOrder

USE [数据库名字]
GO
/****** 对象:  StoredProcedure [dbo].[UP_GetRecordByPageOrder]    脚本日期: 05/20/2014 16:21:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UP_GetRecordByPageOrder]
 
 @tblName varchar(255),   -- 表名 
 @fldName varchar(255),   -- 显示字段名 
 @OrderfldName varchar(255),  -- 排序字段名 
 @StatfldName varchar(255),  -- 统计字段名 
 @PageSize int = 10,   -- 页尺寸 
 @PageIndex int = 1,   -- 页码 
 @IsReCount bit = 0,   -- 返回记录总数, 非 0 值则返回 
 @OrderType bit = 0,   -- 设置排序类型, 非 0 值则降序 
 @strWhere varchar(1000) = ''  -- 查询条件 (注意: 不要加 where) 
AS 

 declare @strSQL varchar(6000)  -- 主语句 
 declare @strTmp varchar(100)   -- 临时变量 
 declare @strOrder varchar(400)  -- 排序类型 

if @OrderType != 0 
 begin 
  set @strTmp = '<(select min' 
  set @strOrder = ' order by [' + @OrderfldName +'] desc' 
 end 
else 
 begin 
  set @strTmp = '>(select max' 
  set @strOrder = ' order by [' + @OrderfldName +'] asc' 
 end 

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from [' 
 + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '([' 
 + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' 
 + @OrderfldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' 
 + @strOrder 

if @strWhere != '' 
 set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from [' 
 + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '([' 
 + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' 
 + @OrderfldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' 
 + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder 

if @PageIndex = 1 
 begin 
  set @strTmp = '' 
  if @strWhere != '' 
  set @strTmp = ' where ' + @strWhere 

  set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from [' 
  + @tblName + ']' + @strTmp + ' ' + @strOrder 
 end 


if @IsReCount != 0 
 set @strSQL = @strSQL+' select count(1) as Total from [' + @tblName + ']'

if @strWhere!=''
 set @strSQL = @strSQL+' where ' + @strWhere
exec (@strSQL) 

 


DAL   参数参考上面的存储过程

 /// <summary>
        /// 分页
        /// </summary>
        /// <param name="PageSize"></param>
        /// <param name="PageIndex"></param>
        /// <param name="strWhere"></param>
        /// <returns></returns>
        public DataSet GetList(int PageSize, int PageIndex, string strWhere)
        {
            SqlParameter[] parameters = {
                        new SqlParameter("@tblName", SqlDbType.VarChar, 255),
                        new SqlParameter("@fldName", SqlDbType.VarChar, 255),
                        new SqlParameter("@OrderfldName", SqlDbType.VarChar, 255),
                        new SqlParameter("@StatfldName", SqlDbType.VarChar, 255),
                        new SqlParameter("@PageSize", SqlDbType.Int),
                        new SqlParameter("@PageIndex", SqlDbType.Int),
                        new SqlParameter("@IsReCount", SqlDbType.Bit),
                        new SqlParameter("@OrderType", SqlDbType.Bit),
                        new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
            };
            parameters[0].Value = "数据表名字";
            parameters[1].Value = "*";
            parameters[2].Value = "用于排序的字段名字";
            parameters[3].Value = "";
            parameters[4].Value = PageSize;
            parameters[5].Value = PageIndex;
            parameters[6].Value = 1;
            parameters[7].Value = 0;
            parameters[8].Value = strWhere;
            return DbHelperSQL.RunProcedure("UP_GetRecordByPageOrder", parameters, "ds");
        }

BLL

        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="PageSize"></param>
        /// <param name="PageIndex"></param>
        /// <param name="strWhere"></param>
        /// <returns></returns>
        public DataSet GetList(int PageSize, int PageIndex, string strWhere)
        {
            return dal.GetList(PageSize, PageIndex, strWhere);
        }


CS    调用演示

        Pz.BLL.Demo pbd = new Pz.BLL.Demo();
        string strSql = string.Empty;
        DataSet ds = new DataSet();

        protected void Page_Load(object sender, EventArgs e)
        {
            strSql = 这里只要select语句 where 后的条件部分;
            ds = pbd.GetList(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, strSql);
            AspNetPager1.RecordCount = (int)ds.Tables[1].Rows[0][0];
            bind();
        }

        protected void bind()
        {
            ds = pbd.GetList(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, strSql);
            Repeater1.DataSource = ds.Tables[0];
            Repeater1.DataBind();
        }

        protected void AspNetPager1_PageChanged(object sender, EventArgs e)
        {
            bind();
        }


ASPX   演示

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
 <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="30" HorizontalAlign="Center"
            Width="100%" PageIndexBoxType="DropDownList" OnPageChanged="AspNetPager1_PageChanged"
            NumericButtonTextFormatString="<{0}>">
        </webdiyer:AspNetPager>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值