经常要用到分页,就自己用ASP.NET2.0随便写了个分页控件,暂时根据项目需要凑合着用下,不足之处切莫见笑写了个分页导航控件
        我的控件直接从CompositeControl继承,不与数据列表控件如RepeaterList等绑定,默认从配置文件自动设置页面大小,从数据库读取当前记录总数,也能自己在初始化时进行设置,主要功能是设置自身导航界面的状态,向外提供该次分页的数据信息:记录总数、当前页码、页面总数、当前要绑定数据的起始记录号(与SQL Server 2005的ROW_NUMBER() OVER使用很方便),从而通过它的属性从外部读出数据绑定到任一可绑定数据控件,代码如下:
写了个分页导航控件using System;
写了个分页导航控件
using System.Configuration;
写了个分页导航控件
using System.Collections.Generic;
写了个分页导航控件
using System.ComponentModel;
写了个分页导航控件
using System.Text;
写了个分页导航控件
using System.Web;
写了个分页导航控件
using System.Data;
写了个分页导航控件
using System.Data.SqlClient;
写了个分页导航控件
using System.Web.UI;
写了个分页导航控件
using System.Web.UI.WebControls;
写了个分页导航控件
using Charly.DBUtility;   // 数据访问组件引用
写了个分页导航控件

写了个分页导航控件
namespace Charly.WebControls


        上面获取记录总数的存储过程如下:
写了个分页导航控件CREATE PROCEDURE dbo.GetObjectNumber
写了个分页导航控件(
写了个分页导航控件    
@TableName varchar(50),
写了个分页导航控件    
@Filter nvarchar(100)
写了个分页导航控件)
写了个分页导航控件
写了个分页导航控件
AS
写了个分页导航控件    
写了个分页导航控件    
DECLARE @spSQL varchar(500)
写了个分页导航控件    
SET @spSQL = 'SELECT COUNT(*) AS RecordNumber FROM ' + @TableName + ' WHERE 1=1 ' + @Filter
写了个分页导航控件    
EXEC(@spSQL)
写了个分页导航控件
写了个分页导航控件
RETURN
写了个分页导航控件

        该控件使用如下:
        1.添加对该控件dll的引用,并在页面中添加引用:
写了个分页导航控件<%@ Register TagPrefix="Charly" Namespace="Charly.WebControls" Assembly="WebControls" %>
        2.在你的Page_Load中绑定翻页事件方法,并设置好它的相关属性,如
写了个分页导航控件dnArticleList.PageIndexChanged += new DataNavigator.PageIndexChangedEventHandler(DataNavigatorArticleList_PageIndexChanged);
    dnArticleList.ObjectName = "文章";
    dnArticleList.ObjectQuantifier = "篇";
    dnArticleList.TableName = "Articles";
    dnArticleList.Filter =  " AND UserID = '" + strUserID + "'";
    dnArticleList.PageIndex = 1;
        在该DataNavigatorArticleList_PageIndexChanged方法中重新绑定你要显示的列表数据。
        3.控件初始化
        根据自己的需要在初始化的时候(一般是Page_Load中)对导航控件的属性进行设置,如需要重新设置,可设置完其属性后,调用它的SetNavigatorPage()方法生效,比如重新设定过滤条件的时候。
        翻页的时候需要根据它的属性值重新绑定你的数据到RepeaterList等数据列表控件。

相关文章: