天龙

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

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

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是否可以点选

        
取得或设定当前页

        
取得或设定总页数

        
取得或设定总记录数

        
改变页码
    }

}

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

 
posted on 2005-12-23 11:28  天龙  阅读(261)  评论(0编辑  收藏  举报