最近写了一个.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