• 公布本人自编的asp.net的分页控件


    由于在开发asp.net的企业应用软件中,实在太需要第三方的分页控件了。因为datagrid内置的分页性能底下不说,样式也固定了而且简陋,无法满足客户需求。上网找过一些别人写的分页控件,但是很多都是和数据绑定一起的,用起来比较复杂,而且通用性不好,又没有开源,有的甚至要注册,逼不得已自己动手写了。

    一开始我用了用户控件方式写的,因为实现起来似乎比较简单,但可恶的是.net.1.1版本对用户控件的自定义事件支持不太好,经常编译的时候警告我的自定义分页触发事件,然后莫名其妙的事件注册就会丢失,让我觉得巨不爽。后来研究sdk上的编写自定义服务器控件的范例,参照着写了分页的自定义控件。

    本人认为该分页控件的特点如下:

    1 使用灵活,通用性强。因为 和数据绑定无关,网上关于从数据库取分页数据的sql语句或者存储过程有n多,但是通用性和效率之间似乎总是鱼和熊掌的关系,你可以自己选择或者自己定义适合自己的分页算法。

    2 使用简单。大概用法是这样的,在从数据库取得新数据集的时候(注意我说的新数据集的含义),把总记录数赋给它,在控件的分页事件里,根据从控件的属性里读取出来的当前页索引,分页记录数,调用你自己的算

    法,取得当前新页的数据,重新绑定到数据显示控件里(datagrid,datalist之类的)。简单举例如下:\

    先写一个根据控件里的当前页码,分页大小取当前页数据绑定到datagrid的方法

    BindPageData()

      int pageSize=CutePager1.pageSize;

     int currentPage=CutePager1.currentPage;

    //有了这2个参数,你就可以调用你自己的分页算法取出当前页的数据了。

    ////此处省略你获取当前页数据的过程

    DataGrid,DataSource=dt;

    DataGrid.DataBind();

    }

    page_load()

    {

    if(!IsPostBack)

    {

    //获取总记录数

    int recordCount=。。。。

    CutePager1.recordCount=recordCount;

    BindPageData();

    }

    }

    分页事件处理代码

    void CutePager1_PageChanged(Object sender,EventArgs e)

    {

    BindPageData();

    }

    其实说白了就是有新的数据集的时候把数据集的记录总数赋值给它,然后在控件的分页事件里写上取当前数据并显示的代码 。

    当然,我的控件里也提供了sqlserver和oracle关于取当前页的一些方法,你用也可以。

     下载地址

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/lindping/p/2004853.html
Copyright © 2020-2023  润新知