zoukankan      html  css  js  c++  java
  • 公布本人自编的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关于取当前页的一些方法,你用也可以。

     下载地址

  • 相关阅读:
    笔记一 Redis基础
    (转载)你一定要努力,但千万别着急
    (转载)[jQuery]使用Uploadify(UploadiFive)多文件上传控件遇到的坑
    Redis学习笔记~StackExchange.Redis实现分布式Session
    转载 mvc中 将session保存到redis中 实现共享session
    webconfig配置信息转发
    2019.9.25-二分查找代码(递归和非递归方法)
    2019.9.24-常见排序算法效率比较【图】
    2019.9.24-归并排序(代码)
    2019.9.24-快速排序实现(完整代码)
  • 原文地址:https://www.cnblogs.com/lindping/p/2004853.html
Copyright © 2011-2022 走看看