在Asp.net中自定义的分页控件

 

此分页控件是采用后台存储过程分页,每次只取一页的数据。当然,物不尽美,同样数据量很大的时候,也会增加数据库的负担,因每次翻页的时候,都要与数据库进行交互!
一、存储过程

CREATE        PROCEDURE   [ dbo ] . [ PageData_P ]  
@sqlstr   nvarchar ( 3500 ),      -- SQL字符串
@curpage   int ,         -- 第N页
@pagesize   int          -- 每页行数
AS
begin

set  nocount  on
declare   @P1   int ,         -- P1是游标的id
         @rowcount   int @pagecount   int
SET   @sqlstr   =   RTRIM ( @sqlstr )
exec  sp_cursoropen  @P1  output, @sqlstr , @scrollopt = 1 , @ccopt = 1 , @rowcount = @rowcount  output
set   @pagecount   =   ceiling ( 1.0 * @rowcount / @pagesize )
if   @curpage <= 1
    
set   @curpage   = 1
if   @curpage > @pagecount
    
set   @curpage = @pagecount
select   @rowcount   as  Total,  @pagecount   as  PageCount, @curpage   as  CurPage    
set   @curpage = ( @curpage - 1 ) * @pagesize + 1
exec  sp_cursorfetch  @P1 , 16 , @curpage , @pagesize  
exec  sp_cursorclose  @P1
end
GO

二、在项目中新增一用户控件,命名为Pager.ascx
1、页面代码为: 

<% @ Control Language="c#" AutoEventWireup="false" Codebehind="Pager.ascx.cs" Inherits="IncludeLib.UserControl.Pager" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"  %>
< asp:Table  width ="100%"  runat ="server"  id ="tblPager"  HorizontalAlign ="Center" >
    
< asp:TableRow >
        
< asp:TableCell  HorizontalAlign ="Center" >
            
< asp:linkbutton  id ="btnFirst"  runat ="server"  CommandArgument ="fist"  Font-Size ="10" > 首页 </ asp:linkbutton > &nbsp; |
            
< asp:linkbutton  id ="btnPrev"  runat ="server"  CommandArgument ="prev"  Font-Size ="10" >  
                          上一页
</ asp:linkbutton > &nbsp; |
            
< asp:linkbutton  id ="btnNext"  runat ="server"  CommandArgument ="next"  Font-Size ="10" >  
                          下一页
</ asp:linkbutton > &nbsp; |
            
< asp:linkbutton  id ="btnLast"  runat ="server"  CommandArgument ="last"  Font-Size ="10" >  
                          末页
</ asp:linkbutton > &nbsp; < FONT  size ="2" > 到第
                
< asp:textbox  id ="txtGoPage"  runat ="server"  MaxLength ="4"  AutoPostBack ="True"  Width ="36px" > 1 </ asp:textbox > &nbsp;
            
</ FONT >< FONT  size ="2" >
                
< asp:label  id ="lblCurrentIndex"  runat ="server" > 1 </ asp:label > 页/共
                
< asp:label  id ="lblPageCount"  runat ="server" > 0 </ asp:label > 页(
                
< asp:label  id ="lblRecordCount"  runat ="server" > 0 </ asp:label > )条 &nbsp; </ FONT >
        
</ asp:TableCell >
    
</ asp:TableRow >
</ asp:Table >


2、CS代码部分:

namespace  MyLibrary.UserControl
{
    
using System;
    
using System.Data;
    
using System.Drawing;
    
using System.Web;
    
using System.Web.UI.WebControls;
    
using System.Web.UI.HtmlControls;
    
using System.ComponentModel;
    
using System.Web.UI;
    
using System.Collections;
    
    
public class Pager : System.Web.UI.UserControl
    
{
        
变量定义

        
数据绑定事件

        
初始化网页

        
Web Form 设计工具产生的程序代码

        
变量定义

        
第一页

        
前一页

        
下一页

        
最后一页

        
改变第几页的textbox值

        
设定link是否可以点选

        
取得或设定当前页

        
取得或设定总页数

        
取得或设定总记录数

        
改变页码
    }

}

三、用法与事例
     使用说明--举例

 

你可能感兴趣的:(asp.net)