• 数据分页


    新建用户控件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






  • 相关阅读:
    mysql重复数据下,删除一条重复数据
    Mysql常用函数
    鼠标滑至某位置,在鼠标旁边出现详情弹窗div
    限制文本框只能输入正数,负数,小数
    JAVA中split对空串的影响。
    《JAVA与模式》之简单工厂模式 (转)
    linux 常用命令汇总
    《JAVA与模式》之责任链模式
    《JAVA与模式》之模板方法模式 (转)
    java 异常汇总
  • 原文地址:https://www.cnblogs.com/yinpeng186/p/1660042.html
Copyright © 2020-2023  润新知