分页及页码导航 用户控件

该控件成形如图:

主要功能如下:
用户设置每页行数 (或者不设置 则该控件默认每页10笔数据)
用户设置分页控件的数据源DataTable(或者输入查询sql)
该控件会先将传入的数据源保存到session(这样之后就不用重复查询)
然后根据用户的操作(第一页、上一页,下一页,最后页,Go页)
以及当前所在的页码
得到符合条件的返回数据 (即点击下一页或上一页后 需要正确显示的数据集)
同时 可以根据数据是否多于一页 来决定该控件是否需要显示
然后用户可以选用 这返回的DataTable数据集进行相关操作
(本控件 已加入部分js判断)
==============
示例源代码如下:
++++++++++++++++++
PageIndexCtl.ascx
+++++++++++++


+++++++++++++++++++++
PageIndexCtl.ascx.cs
+++++++++++++++++++++

++++++++++++++++++++++++
testPageIndexCtl.aspx.cs
++++++++++++++++++++++++
protected void Button1_Click(object sender, EventArgs e)
    
{
        
string strComm = " SELECT * From Table1 order by id aesc ";
        SqlResult sr 
= Broker.Execute(strComm);
        DataTable dt 
= ObjectView.GetDataView(sr).Table;

        
this.PageIndexCtl1.CountPerPage = 5;
        GridView1.DataSource 
= PageIndexCtl1.selfMeasure(dt);
        GridView1.DataBind();
    }


    
protected void Page_Init()
    
{
        
//订阅事件
        this.PageIndexCtl1.EventFirstPage += new System.EventHandler(this.EventFirstPage);
        
this.PageIndexCtl1.EventPrePage += new System.EventHandler(this.EventPrePage);
        
this.PageIndexCtl1.EventNextPage += new System.EventHandler(this.EventNextPage);
        
this.PageIndexCtl1.EventLastPage += new System.EventHandler(this.EventLastPage);
        
this.PageIndexCtl1.EventGoPage += new System.EventHandler(this.EventGoPage);
    }


    
private void EventFirstPage(object sender, EventArgs e)
    
{
        
        
this.GridView1.DataSource = this.PageIndexCtl1.dt_Result;
        
this.GridView1.DataBind();
    }

    
private void EventPrePage(object sender, EventArgs e)
    
{
        
this.GridView1.DataSource = this.PageIndexCtl1.dt_Result;
        
this.GridView1.DataBind();
    }

    
private void EventNextPage(object sender, EventArgs e)
    
{
        
this.GridView1.DataSource = this.PageIndexCtl1.dt_Result;
        
this.GridView1.DataBind();
    }

    
private void EventLastPage(object sender, EventArgs e)
    
{
        
this.GridView1.DataSource = this.PageIndexCtl1.dt_Result;
        
this.GridView1.DataBind();
    }

    
private void EventGoPage(object sender, EventArgs e)
    
{
        
this.GridView1.DataSource = this.PageIndexCtl1.dt_Result;
        
this.GridView1.DataBind();
    }


posted on 2006-12-29 19:37 freeliver54 阅读(2051) 评论(22) 编辑 收藏

评论

#1楼 2006-12-30 17:43 随心所欲      

看起来,你的控件需要外部提供数据源,这个数据源里面有所有的数据。
这样的话,是不是太浪费?
控件的分页需要和数据库分页结合。全部把数据取出来,是不现实的。
 回复 引用 查看   

#2楼[楼主] 2006-12-30 18:46 freeliver54      

收到 正在改进中
谢谢提醒
 回复 引用 查看   

#3楼[楼主] 2006-12-31 13:05 freeliver54      

从StuName表 查询第3到5条数据
----------------------------
SQL2000下
---------
SELECT Identity(int,1,1) as RowIndex,
StuID,StuName
INTO #tmpTable
FROM StuSources

SELECT * FROM #tmpTable WHERE RowIndex between 3 and 5

DROP TABLE #tmpTable
------------------------------------------------------
SQL2005下
---------
SELECT * FROM
(SELECT ROW_NUMBER() OVER(order by StuID) as RowIndex ,
StuID,StuName
FROM StuSources ) T
WHERE RowIndex between 3 and 5
-------------------------------------------------------
 回复 引用 查看   

#4楼 2007-01-01 08:54 随心所欲      

@freeliver54
这是数据库分页的一种。数据库分页也非很多种。根据不同的场合有不同的需求。
如果要做成一种控件,最好使用简单的。还要考虑不同数据库类型的扩展。
 回复 引用 查看   

#5楼 2007-01-01 08:57 随心所欲      

就算只有一个sql server,分页也有多种。
这是很早以前的一篇blog,上边有些比较(sql server数据分页 比较
http://www.cnblogs.com/dlwang2002/archive/2005/10/14/254971.html
 回复 引用 查看   

#6楼[楼主] 2007-01-03 10:23 freeliver54      

@随心所欲
多谢提醒
我个人目前的知识面 的确狭窄
感谢你的指导
定当努力 谢谢你!
 回复 引用 查看   

#7楼 2007-01-03 14:49 随心所欲      

@freeliver54
互相学习而已。
我可能也会用到这个控件,做好了免费给我用就可以了^_^
 回复 引用 查看   

#8楼[楼主] 2007-01-10 20:32 freeliver54      

目前在控件内部所加的JS判断
遇到如下困难
就是当该分页控件 应用到ajax的UpdatePanel中时
用传统的document.all.TextBox1.value得不到
当前页面上TextBox1的值

例如:
当点击 下一页 后
页面上的当前页TextBox1 中显示的为 2

通过查看该页面的源代码时 却发现
TextBox1的Value值依然是1
这样 内部js就会判断出错了
 回复 引用 查看   

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 607331 ZeVM+yfXPUw=

导航

统计

公告


确立生活价值
分段人生历程
目标 计划 去行动...

每一天都有新的开始
每一天都是新的开始
愿我们
善始善终 持之以恒
不管前方 是希望还是迷茫
我们都只有一个信念
让我们的爱  伴我们终生

健康 平安 简单 惜福

昵称:freeliver54
园龄:6年
粉丝:63
关注:0

搜索

 

随笔分类

随笔档案

techLINKS

友情链接

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜