简单实现一个.net分页控件

最近写了一个.net的分页控件,放到园子里。。。你觉得好,就点个赞,不好呢,就告诉我为啥吧。。。。

是使用Request.QueryString的。。。。

参数:

public int currentPageIndex = 0;//当前页数
        public int pagesize = 16;//每页显示的条数

        public int pagecount = 0;//页数
        public int rowscount = 0;//总条数
        public string prevtext = "前一页";
        public string nexttext = "后一页";
        public string ellipsetext = "...";//分隔符
        public int edgeentries = 2;//页边
        public bool prevshowalways = true;//前一页按钮是否显示
        public bool nextshowalways = true;//后一页按钮是否显示
        public int displayentries = 5;//显示几个按钮
        public string url;
        public string pagestr = "";

用到的类

计算最大页数这里没啥好说的,从数据库读出条数之后赋给rowscount即可。

//计算最大的页数
        public int NumPages()
        {
            return Convert.ToInt32(Math.Ceiling((decimal)rowscount / pagesize));
        }

主要问题就在于计算开始和结束按钮这里,这里整好了,就相当于一半都没问题了

一开始我是使用的如下的代码,但是有问题。。。。如果displayentries为2n-1时,最后出来的是2n。

//根据当前页数和显示数目计算开始和结束的分页按钮
        public int[] GetInterval()
        {
            int nehalf = Convert.ToInt32(Math.Ceiling((decimal)displayentries / 2));
            pagecount = NumPages();
            int upperlimit = pagecount - displayentries;//最大就是upperlimit,再大的话按钮的个数就不能保证了。
            int start = currentpageindex > nehalf ? Math.Max(Math.Min(currentpageindex - nehalf, upperlimit), 1) : 1;
            int end = currentpageindex > nehalf ? Math.Min(currentpageindex + nehalf - 1, pagecount) : Math.Min(displayentries, pagecount);
            return new int[] { start, end };
        }

主要的原因就在于Math.Ceiling返回的是整数,而2n-1和2n返回的是同样一个数,所以就会造成按钮个数上出现问题。

所以呢,我就区别了一下奇数和偶数

//根据当前页数和显示数目计算开始和结束的分页按钮
        public int[] GetInterval()
        {
            int nehalf = Convert.ToInt32(Math.Ceiling((decimal)displayentries / 2));
            pagecount = NumPages();
            int upperlimit = pagecount - displayentries;
            int start,end;
            if (displayentries % 2 == 0)
            {
               start = currentpageindex > nehalf ? Math.Max(Math.Min(currentpageindex - nehalf, upperlimit), 1) : 1;
            }
            else
            {
                start = currentpageindex > nehalf ? Math.Max(Math.Min(currentpageindex - nehalf+1, upperlimit), 1) : 1;
            }
            end = currentpageindex > nehalf ? Math.Min(currentpageindex + nehalf - 1, pagecount) : Math.Min(displayentries, pagecount);
            return new int[] { start, end };
        }

添加按钮类

public string AppendItem(int pageid, string text)
        {
            string lnk;
            int id = pageid < 1 ? 1 : (pageid < pagecount ? pageid : pagecount);
            if (id == currentpageindex)
            {
                lnk = "<span class='current'>" + text + "</span>";
            }
            else
            {
                lnk = "<a href=?" + url + "&pageid=" + id + ">" + text + "</a>";
            }
            return lnk;
        }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, int
, 按钮
, public
, math
, 返回前一页
Math.Min
php分页代码简单实现、winform 简单分页控件、简单实现datalist分页、asp.net 分页控件、asp.net mvc 分页控件,以便于您获取更多的相关知识。

时间: 2024-10-02 07:01:00

简单实现一个.net分页控件的相关文章

一个简单的ASP.MVC分页控件

分页功能实现方面参考了网上的一些内容,加上自己的一些修改,使用方式如 下: (鉴于分页代码基本上和别人的没什么两样,所以这里就省略了.) 封装扩展方法 public static string Pager(this HtmlHelper html, IPageData model, bool alwaysShow,bool showNumber) { string text = "<!--没有任何数据,所以不显示分页控件-->"; bool show = model.Tot

自己动手写的jquery分页控件(非常简单实用)_jquery

最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了.写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性不知道怎么没时间测试呢.欢迎有同样需求的小伙伴采用,在使用过程发现有问题欢迎提出批评建议.   css: @charset "utf-"; * { margin:px; padding:px; font-family:"微软雅黑";

用javascript实现的分页控件

  随着Ajax的应用越来越多,经常需要在前台去加载数据,这样可以减少页面加载的时间,同时也改善了用户的体验性,所以结合实际的项目需要我写了一个javascript的分页控件,用于绑定table,实现类似datagrid分页控件的功能.以下为调用Js分页控件的代码. var rows; var tab = document.getElementById("table1");//table对象 var _total=0;//数据总数 var pager;//分页对象 function p

【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能

    myPage分页控件发出来之后,虽然开源了,但是没有给一个简单一点的 demo,真是漏掉了一个很重要的部分.     先说明一下使用myPage分页控件需要的文件.     Controls.dll :这个是分页控件的dll文件,您可能要问,为什么不叫 myPage.dll呢?因为里面不仅有分页控件,还包含其他的控件,比如扩展功能的TextBox等控件,这是多个控件的集合,所以就叫做 Controls.dll 了.对应的有一个Controls.XML文件,里面放的是控件里的属性.函数.事

ASP.Net分页控件发布

asp.net|分页|控件 由于.net自带的分页功能极其死板,自定义性不强不能满足需求,俺花了一个多星期的时间 写成的一个.net分页控件. 特性: 1.支持datagrid,datalist等分种数据显示控件,理论上只要有datasource的控件都可以 2.支持url方式分页,url分页的每一页都可以被搜索引擎搜到,并且支持url重写 3.控件样式可自定义 4.封装完全,使用过程序只需写一行代码   1 /******************************************

分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?

  目的: 1.一个页面(DataList.aspx)可以显示多个模块的列表功能.      一般是有一个列表需求就需要一个aspx文件,如果有100个列表,那么就会有100个aspx文件,这么多的文件(包括.aspx.cs文件)里面的内容基本是一样的,这样写起来麻烦,管理起来也不容易,命名就是一个比较头痛的问题.文件多了.打开IDE.备份程序文件.编译所需要的时间都会增长.这些都是很郁闷的事情.那么我们能不能"合并"一下呢?所有(或者大部分没有特殊情况的)列表都是用同一个aspx文件

Asp.net mvc简单实现基于Razor的分页控件

最近在写一些web应用了解了一下asp.net mvc发现的确好用,所以直接就干上了.不过在使用asp.net mvc的Razor模板的情况并不向传统webform那样可以使用控件.但从Razor的功能上已经具备相关代替的功能,只是从Razor角度来说不是 我们平常说的控件而是子模板.由于Razor可以根据自己需求把功能拆分到子模板中,然后通过RenderPage方法输出.从设计的手段上来看完全可以 把分页控件封装成一个子的cshtml,在需要的时候引用上就是了. 作为一个控件的设计其最重要的环

一个比较通用的分页控件,完整的设计时支持和比较流行的分页模式(提供源码下载)

这是我写的一个分页控件,功能如下: 1.支持设计时支持和两种分页模式,其中综合分页模式的效果如下: 普通分页模式的效果如下: 2.完善的设计时支持,包括自动套用格式和设计时面板设置: 使用方法: 在aspx页面中:复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Cyclone.Custom

打造一个通用ASP.NET数据分页控件

asp.net|分页|控件|数据 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似