数据分页

新建用户控件pageno.ascx

Code

后台pageno.ascx.cs    
Code
BLL层PageList.cs
Code

 

DAL层PageList.cs

Code

 

Default.aspx

Code

 

Default.aspx.cs


代码
using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

namespace  YPEN.Web
{
    
public   partial   class  Default : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
if  ( ! Page.IsPostBack)
            {
                Bind();
            }
        }
        
private   void  Bind()
        {
            
string  strURl  =  Request.RawUrl;
            strURl 
=  strURl.Substring( 0 , strURl.IndexOf( " .aspx " ))  +   " .aspx " ;
            strURl 
+=   " ?Z=0 " ;
            
int  pageSize  =   2 ; // 这里设置分页尺寸
             int  pageIndex  =   1 ;
            
string  strWhere  =   " 1=1  " ;
            
if  (Request.QueryString[ " page " !=   null )
            {
                pageIndex 
=  Convert.ToInt32(Request.QueryString[ " page " ].ToString());
            }
            pageno1.Strurl 
=  strURl;  // 当前页url
            pageno1.FldName  =   " id " // 排序字段
            pageno1.Table  =   " city " ; // 表名
            pageno1.StrGetFields  =   " * " ; // 查询字段 
            pageno1.PageSize  =  pageSize;  // 页面数目
            pageno1.Where  =  strWhere;  // 过滤条件
            pageno1.Pageindex  =  pageIndex;
            DataTable dt 
=  pageno1.BindView();
            
this .DataList1.DataSource  =  dt.DefaultView;
            
this .DataList1.DataBind();
        }
    }
}

 

 分页所用存储过程

 

代码
if   object_id ( ' [SP_Pagination] ' is   not   null   drop   procedure   [ SP_Pagination ]
go
USE   [ ypentest ]
GO
/* ***** 对象:  StoredProcedure [dbo].[SP_Pagination]    脚本日期: 01/30/2010 11:08:32 ***** */
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO

CREATE   PROCEDURE   [ dbo ] . [ SP_Pagination ]
@tblName     varchar ( 255 ),              --  表名 .
@strGetFields     varchar ( 1000 = ' ' --  需要返回的列   
@fldName     varchar ( 255 ) =   '   ' ,         --  排序的字段名 
@PageSize     int     =     10 ,             --  页尺寸 
@PageIndex     int     =     1 ,             --  页码 
@doCount     bit     =     0 ,               --  返回记录总数,非 0 值则返回 
@OrderType     int     =     0 ,             --  设置排序类型,非 0 值则降序 
@strWhere     varchar ( 1500 = '   '  ,       --  查询条件(注意: 不要加where) 
@keyDate     varchar ( 1500 = '   '
AS  
declare     @strSQL     varchar ( 5000 )     --  主语句 
declare     @strTmp     varchar ( 110 )      --  临时变量 
declare     @strOrder     varchar ( 400 )    --  排序类型 
declare     @fldNames     varchar ( 100 )      --  排序字段,如果两张表,只查询单张表的数据,去掉前面的表名
declare     @str          varchar ( 100 )
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  
    
declare   @length   int
    
declare   @str1     varchar ( 100 )
    
set   @str1 = @fldName ;
    
if   charindex ( ' , ' , @fldName , 0 ) > 0
    
begin  
        
set   @str = SUBSTRING ( @fldName , CharIndex ( ' , ' , @fldName , 0 ) + 1 , len ( @fldName ))
        
if   charindex ( ' . ' , @str , 0 ) > 0  
        
begin
            
set   @length = CharIndex ( ' . ' , @str , 0 )
            
set   @fldNames = SUBSTRING ( @str , @length + 1 , len ( @str ))
        
end
        
else
        
begin
            
set   @fldNames = @str
        
end
    
end
    
else
    
begin
        
if   charindex ( ' . ' , @fldName , 0 ) > 0  
        
begin
            
set   @length = CharIndex ( ' . ' , @fldName , 0 )
            
set   @fldNames = SUBSTRING ( @fldName , @length + 1 , len ( @fldName ))
        
end
        
else
        
begin
            
set   @fldNames = @fldName
        
end
    
end

    
if   charindex ( ' , ' , @fldName , 0 ) > 0
    
begin
        
set   @str = SUBSTRING ( @fldName , 0 , CharIndex ( ' , ' , @fldName , 0 )) + ' , '
        
set   @fldName = SUBSTRING ( @fldName , CharIndex ( ' , ' , @fldName , 0 ) + 1 , len ( @fldName ))
    
end
    
else
    
begin
        
set   @str = ''
    
end  
 
    
if   @OrderType   =   1  
    
begin  
        
set   @strTmp   =   '  <(select   min  '  
        
set   @strOrder   = '  order by  ' +   @str    + @fldName +   '  desc  '  
    
-- 如果@OrderType不是0,就执行降序,这句很重要! 
     end  
    
else   if   @OrderType   =   0
    
begin  
        
set   @strTmp   =   ' > (select max  '  
        
set   @strOrder   = '  order by  ' +   @str    + @fldName +   '  asc  '  
    
end  
    
else
    
begin  
        
set   @strTmp   =   ' NOT IN (SELECT TOP  '  
        
set   @strOrder   = '  order by  ' +   @str    + @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 +   ' '   + @fldNames +   ' ) from (select top  '   + str (( @PageIndex - 1 ) * @PageSize )   
+   '   '   + @fldName +   '  from  '   + @tblName +   '   '   + @strOrder +   ' ) as tblTmp)  '   + @strOrder  

        
if   @strWhere   !=   '   '  
            
if ( charindex ( ' , ' , @str1 , 0 ) > 0 )
                
set   @strSQL   =   ' select top  '   + str ( @PageSize ) +   '   '   + @strGetFields +   '  from  '   + @tblName +   '  where  '   + @strWhere +   '  and   '   + @keyDate +   '  not in (select top  '   + str (( @PageIndex - 1 ) * @PageSize )  
+   '   ' +   @keyDate +    '  from  '   + @tblName +   '  where  '   + @strWhere +   '   '   + @strOrder +   ' '    + @strOrder  
            
else
                
set   @strSQL   =   ' select top  '   + str ( @PageSize ) +   '   '   + @strGetFields +   '  from  '   + @tblName +   '  where  '   + @fldName +   '   '   + @strTmp   +   ' '   + @fldNames +   ' ) from (select top  '   + str (( @PageIndex - 1 ) * @PageSize )  
+   '   '   + @fldName +   '  from  '   + @tblName +   '  where  '   + @strWhere +   '   '   + @strOrder +   ' ) as tblTmp) and  '   + @strWhere +   '   '   + @strOrder  
    
end    
end
exec    ( @strSQL






 

 

你可能感兴趣的:(分页)