自定义分页控件PageList
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Commons
{
public class PageList<T> : IEnumerable<T>
{
private int pageIndex;
private int pageSize;
private int totalPage;
private int totalCount;
private IList<T> list;
/// <summary>
/// 单页数据,总条数,计算出总页数,然后封装成分页对象
/// </summary>
/// <param name="list"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
public PageList(IList<T> list, int pageIndex, int pageSize, int totalCount)
{
if (list != null)
{
this.pageIndex = pageIndex;
this.pageSize = pageSize;
this.totalCount = totalCount;
this.totalPage = totalCount / pageSize;
) ;
this.list = list;
}
else
{
this.list = new List<T>();
}
}
/// <summary>
/// 全部数据,筛选出当页数据且计算出总条数和总页数,然后封装成分页对象
/// </summary>
/// <param name="list"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
public PageList(IList<T> list, int pageIndex, int pageSize)
{
if (list != null)
{
this.pageIndex = pageIndex;
this.pageSize = pageSize;
this.totalCount = list.Count;
this.totalPage = list.Count / pageSize;
) ;
)).Take(pageSize).ToList();
}
else
{
this.list = new List<T>();
}
}
public int PageIndex { get { return this.pageIndex; } }
public int PageSize { get { return this.pageSize; } }
public int TotalPage { get { return this.totalPage; } }
public int TotalCount { get { return this.totalCount; } }
public IEnumerator<T> GetEnumerator()
{
foreach (var item in this.list)
{
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
public IHtmlString PageBar(string url, object property)
{
if (string.IsNullOrEmpty(url)) url = string.Empty;
else
{
url = url.Trim().TrimEnd('?', '&');
if (url.Contains("?")) url += "&";
else url += "?";
}
string html = "<ul class=\"pagination\">{0}</ul>";
, pageMax = this.TotalPage;
string page = string.Empty;
; (i > ()) && i > ; i--)
{
string pageUrl = string.Format("{0}pageIndex={1}", url, i);
page = "<li><a href=\"" + pageUrl + "\">" + i + "</a></li>" + page;
pageMin = i;
}
page = page + "<li class=\"active\"><a href=\"#\">" + this.pageIndex + "</a></li>";
; (i < ()) && i < ; i++)
{
string pageUrl = string.Format("{0}pageIndex={1}", url, i);
page = page + "<li><a href=\"" + pageUrl + "\">" + i + "</a></li>";
pageMax = i;
}
//第一页和最后一页
)
{
) > )
page = "<li><a>...</a></li>" + page;
);
page = + "</a></li>" + page;
}
if (pageMax < this.TotalPage)
{
)
page = page + "<li><a>...</a></li>";
string pageUrl = string.Format("{0}pageIndex={1}", url, this.TotalPage);
page = page + "<li><a href=\"" + pageUrl + "\">" + this.TotalPage + "</a></li>";
}
//上一页和下一页
)
page = "<li class=\"prev disabled\"><a href=\"#\"><span class=\"fa fa-angle-left\"></span> 上一页</a></li>" + page;
else
page = ) + "\"><span class=\"fa fa-angle-left\"></span> 上一页</a></li>" + page;
if (this.pageIndex == this.TotalPage)
page = page + "<li class=\"next disabled\"><a href=\"#\">下一页 <span class=\"fa fa-angle-right\"></span></a></li>";
else
page = page + ) + "\">下一页 <span class=\"fa fa-angle-right\"></span></a></li>";
html = string.Format(html, page);
return new HtmlString(html);
}
}
}
自定义分页控件PageList的更多相关文章
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- Mvc自定义分页控件
MVC开发分页常常使用第三方控件,生成的分页HTML带有版权申明,虽然免费,但是总有的别扭.于是,某日,楼主闲来蛋疼,折腾了个自定义分页控件: 先来展示下效果图: 1>当分页不超过10页的时候, ...
- WPF自定义分页控件,样式自定义,简单易用
WPF自定义分页控件 做了许久伸手党,终于有机会贡献一波,搜索一下WPF分页控件,还是多,但是不太通用,主要就是样式问题,这个WPF很好解决,还有一个就是分页控件嘛,只关心几个数字的变动就行了,把页码 ...
- 自定义分页控件-基于Zhifeiya的分页控件改版
基于Zhifeiya的分页控件改版的分页. html显示代码: <div class="pagelist"> {{.pagerHtml}} </div> c ...
- Winform自定义分页控件的实现
实现效果 有点丑陋 但是功能是没问题的 测试过 实现思路 先创建一个用户控件 代码实现 public partial class PagerControl : UserControl { ; /// ...
- winform 自定义分页控件 及DataGridview数据绑定
分页效果如上图所示,用到的控件均为基本控件 ,其方法如下 右击项目-添加-新建项 选择用户控件 然后在用户控件中拖入所需要的Label,Button,Text 用户控件全部代码: using Syst ...
- WPF管理系统自定义分页控件 - WPF特工队内部资料
最近做一个演示的管理系统项目,需要用到分页控件,在网上找了很多,依然找到与UI模版匹配的,最后干脆自己写一个. 分页控件分析: 1.分页控件分简单显示和复杂显示两种: 2.包含上一页.下一页以及页码明 ...
- WPF 自定义分页控件二
一:添加自定义分页控件,命名为KDataPagerTwo: public class KDataPagerTwo : Control, INotifyPropertyChanged { static ...
随机推荐
- 【腾讯Bugly干货分享】美团大众点评 Hybrid 化建设
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/rNGD6SotKoO8frmxIU8-xw 本期 T ...
- HTML和CSS经典布局5
如下图: 需求: 1. 如图 2. 可以从body标签开始. 3. 页面内容高度设置高点,把窗口的滚动条显示出来,但是busy indicator不滚动. <!DOCTYPE html> ...
- Gamma函数是如何被发现的?
学过微积分的人,肯定都接触过Euler积分,按教科书上的说法,这是两种含有参变量的定积分,但其实没那么玄乎,它们只是两个函数.其中第一型Euler积分叫\(B\)-函数,第二型Euler积分叫\(\G ...
- yar框架使用笔记
Yar是什么 Yar是并行的RPC框架(Concurrent RPC framework),Laruence开发. 安装 下载地址:http://pecl.php.net/package/yar wi ...
- 防止SQL注入攻击
了解了SQL注入的方法,如何能防止SQL注入?如何进一步防范SQL注入的泛滥?通过一些合理的操作和配置来降低SQL注入的危险. 使用参数化的过滤性语句 要防御SQL注入,用户的输入就绝对不能直接被嵌入 ...
- hibernate注解方法使用总结(转)
原博文地址:http://blog.sina.com.cn/s/blog_935ebb670101dnre.html 1.类级别注解 @Entity 映射实体类 @Table 映射数据库 ...
- OpenCASCADE Camera
OpenCASCADE Camera eryar@163.com Abstract. OpenCASCADE introduce a new class Graphic3d_Camera for th ...
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...
- Android 裁剪图片为圆形图片
转自http://blog.csdn.net/kkmike999/article/details/16359713 /** * 转换图片成圆形 * * @param bitmap * 传入Bitmap ...
- Android ImageView图片透明区域不响应点击事件,不规则图片透明区域响应点击事件
转载:http://blog.csdn.net/aminfo/article/details/7872681 经常会在项目中用到透明图片,不规则图片,特别是做游戏的时候,需要对图片的透明区域的点击事件 ...