asp.net利用存储过程分页代码

-最通用的分页存储过程
-- 获取指定页的数据
CREATE PROCEDURE Pagination
@tblName   varchar(255),       -- 表名
@strGetFields varchar(1000) = ‘*‘, -- 需要返回的列
@fldName varchar(255)=‘‘,      -- 排序的字段名
@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)        -- 排序类型
if @doCount != 0
begin
   if @strWhere !=‘‘
   set @strSQL = ‘select count(*) as Total from [‘+ @tblName +‘] where ‘+ @strWhere
   else
   set @strSQL = ‘select count(*) as Total from [‘+ @tblName +‘]‘
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
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代码
set @strSQL = ‘select top ‘ + str(@PageSize) +‘ ‘+@strGetFields+ ‘ from [‘ + @tblName +‘] where [‘ + @fldName + ‘]‘ + @strTmp + ‘([‘+ @fldName + ‘])
from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ [‘+ @fldName + ‘] from [‘+ @tblName +‘]‘ + @strOrder + ‘) as tblTmp)‘+ @strOrder 

if @strWhere != ‘‘ 

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

end 

end    

exec ( @strSQL)
GO

asp.net利用存储过程分页sqlserver代码

C#代码
using System.Data ;
using System.Data.SqlClient ;
using Microsoft.ApplicationBlocks.Data ;
using System.Web ;
using System.Web.UI ;
namespace RssLayer.PageHelper
{
    /**//// <summary>
    /// 分页类PagerHelper 的摘要说明。
    /// </summary>
    public class PagerHelper
    {
        private string connectionString;
        public PagerHelper(string tblname,string sortname,bool docount,string connectionString)
        {
            this.tblName = tblname;
            this.fldName = sortname ;
            this.connectionString = connectionString ;
            this.docount = docount;
        } 

        public PagerHelper(string tblname,bool docount,
            string strGetFields,    string fldName,int pagesize,
            int pageindex,bool ordertype,string strwhere,string connectionString
            )
        {
            this.tblName = tblname ;
            this.docount = docount ;
            this.strGetFields = strGetFields ;
            this.fldName = fldName;
            this.pagesize = pagesize ;
            this.pageindex = pageindex;
            this.ordertype = ordertype ;
            this.strwhere = strwhere ;
            this.connectionString = connectionString ; 

        } 

        /**//// <summary>
        /// 得到记录集的构造函数
        /// </summary>
        /// <param name="tblname"></param>
        /// <param name="strwhere"></param>
        /// <param name="connectionString"></param>
        public PagerHelper(string tblname,string strwhere,string connectionString)
        {
            this.tblName = tblname;
            this.strwhere = strwhere ;
            this.docount = true;
            this.connectionString = connectionString ;
        } 

        private string tblName;
        public string TblName
        {
            get{return tblName;}
            set{tblName =value;}
        } 

        private string strGetFields="*";
        public string StrGetFields
        {
            get{return strGetFields ;}
            set{strGetFields =value;}
        } 

        private string fldName=string.Empty;
        public string FldName
        {
            get{return fldName ;}
            set{fldName =value;}
        }

        private int pagesize =10;
        public int PageSize
        {
            get{return pagesize ;}
            set{pagesize =value;}
        } 

        private int pageindex =1;
        public int PageIndex
        {
            get{return pageindex ;}
            set{pageindex =value;}
        }

        private bool docount=false;
        public bool DoCount
        {
            get{return docount ;}
            set{docount =value;}
        } 

        private bool ordertype=false;
        public bool OrderType
        {
            get{return ordertype ;}
            set{ordertype =value;}
        } 

        private string strwhere=string.Empty ;
        public string StrWhere
        {
            get{return strwhere ;}
            set{strwhere =value;}
        } 

        public IDataReader GetDataReader()
        { 

            if(this.docount)
            {
                throw new ArgumentException("要返回记录集,DoCount属性一定为false");
            }
        //    System.Web.HttpContext.Current.Response.Write(pageindex); 

            return SqlHelper.ExecuteReader(connectionString,CommandType.StoredProcedure,"Pagination",
                new SqlParameter("@tblName",this.tblName),
                new SqlParameter("@strGetFields",this.strGetFields),
                new SqlParameter("@fldName",this.fldName),
                new SqlParameter("@PageSize",this.pagesize),
                new SqlParameter("@PageIndex",this.pageindex),
                new SqlParameter("@doCount",this.docount),
                new SqlParameter("@OrderType",this.ordertype),
                new SqlParameter("@strWhere",this.strwhere)
                );
        }
        public DataSet GetDataSet()
        {
            if(this.docount)
            {
                throw new ArgumentException("要返回记录集,DoCount属性一定为false");
            }     

            return SqlHelper.ExecuteDataset(connectionString,CommandType.StoredProcedure,"Pagination",
                new SqlParameter("@tblName",this.tblName),
                new SqlParameter("@strGetFields",this.strGetFields),
                new SqlParameter("@fldName",this.fldName),
                new SqlParameter("@PageSize",this.pagesize),
                new SqlParameter("@PageIndex",this.pageindex),
                new SqlParameter("@doCount",this.docount),
                new SqlParameter("@OrderType",this.ordertype),
                new SqlParameter("@strWhere",this.strwhere)
                );
        }
        public int GetCount()
        {
            if(!this.docount)
            {
                throw new ArgumentException("要返回总数统计,DoCount属性一定为true");
            }                    

            return (int)SqlHelper.ExecuteScalar(connectionString,CommandType.StoredProcedure,"Pagination",
                new SqlParameter("@tblName",this.tblName),
                new SqlParameter("@strGetFields",this.strGetFields),
                new SqlParameter("@fldName",this.fldName),
                new SqlParameter("@PageSize",this.pagesize),
                new SqlParameter("@PageIndex",this.pageindex),
                new SqlParameter("@doCount",this.docount),
                new SqlParameter("@OrderType",this.ordertype),
                new SqlParameter("@strWhere",this.strwhere)
                );
        }         

    }
}

asp.net利用存储过程分页后台代码

时间: 2024-09-29 19:42:54

asp.net利用存储过程分页代码的相关文章

ASP.NET MVC 简单分页代码

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using SportsStore.WebUI.Models; using System.Text; namespace SportsStore.WebUI.HtmlHelpers { /// <summary> /// 分页辅助器 /// </summary> publ

ASP.NET MVC利用PagedList分页(一)

前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行分页,而且非常简单好用.从NuGet上,可以获取两个DLL:PagedList.dll和PagedList.Mvc.dll.PagedList.dll提供分页的核心操作,PagedList.Mvc.dll是一个辅助类库,在创建分页的UI时候提供简单.可扩展的创建方法.不过PagedList.dll可以用于MV

ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

(原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人绝对局部刷新更准确 些)的分页.其实在PagedList.Mvc中早已经为我们提供好了Ajax分页的各种东东,但是这里我要自己写下. 实现思想: 1.客户端发送Ajax请求.2.服务器端响应请求并将响应结果回传给客户端.3.客户端接收响应结果并进行数据绑定. 实现方案: 大多数人都知道这个思想,但是

C#高效分页代码(不用存储过程)

首先创建一张表(要求ID自动编号): create table redheadedfile ( id int identity(1,1), filenames nvarchar(50), senduser nvarchar(50), primary key(id) ) 然后我们写入50万条记录: declare @i int set @i=1 while @i<=500000 begin insert into redheadedfile(filenames,senduser) values(&qu

Oracle利用存储过程性 实现分页

分页的简单配置 在上一次已经说过了 这边说说怎么在存储过程中实现分页 首先建立存储过程 参考 http://www.cnblogs.com/gisdream/archive/2011/11/16/2251687.html 基本的代码如下所示 1.在oracle的sqlplus或其他工具中运行一下pl/sql块建立存储过程 ------------------------------------------------------------ --分页存储过程 ------------------

ASP.NET中DataList数字分页代码

ASP.NET中DataList数字分页代码 转 荐 好长时间没发东西了, 之前一段时间一直在做别的东西, 最近java实验室要开搞系统哈哈, 重新学习.net 这个分页困扰了我这个菜鸟好久阿, 搞了好久终于找到这段代码, 还是数字分页, 试了成功了~还不会分页的朋友看到这个就偷笑吧~~ 代码转自http://hi.baidu.com/honfei css样式取自吴旗娃aspnetpager 效果: 共1页       首页 上一页  1 2 3 4 5 6 7 8 9 10 ....下一页 末

c#分页代码(转载)

首先创建一张表(要求ID自动编号): create table redheadedfile ( id int identity(1,1), filenames nvarchar(50), senduser nvarchar(50), primary key(id) ) 然后我们写入50万条记录: declare @i int set @i=1 while @i<=500000 begin insert into redheadedfile(filenames,senduser) values(&qu

利用插件分页

利用插件分页:   <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" AlwaysShow="true" UrlPaging="t

ASP.NET之刷新分页

1,第一次全部把数据加载到内存中,然后再做分页,性能差,不推荐. 2,GridView自带分页 3,AspNetPager分页控件  这个是第三分控件需要下载,很好用 4,自己写分页 前三种就不介绍如何写了,网上很多,今天就来记录一下自己写的分页,不需要下载任何东西,全部都是代码完成. 我们的前台 <form id="form1" runat="server"> <div> //数据显示 <asp:Repeater ID="r