using System.ComponentModel;
using System.Web.UI;
[assembly: TagPrefix("Jinlong.Control", "Jinlong")]
namespace Jinlong.Control
{
/// <summary>
/// JRepeater控件
/// Create by Jinlong Zhang
/// </summary> [DefaultProperty("Text"), ToolboxData("<!--Repeater Begin --><div class=\"BigDiv_rep\"> <{0}:Repeater ID=\"Rep_List\" runat=server EnableViewState=\"false\" OnPreRender=\"Rep_List_PreRender\"> <HeaderTemplate><div class=\"BigDiv_Title_rep\"> <ul> <li style=\"line-height:22px;\"> <asp:CheckBox ID=\"TopCheckBox\" runat=\"server\" Text=\"ID\" EnableViewState=\"false\"/> </li><li style=\"width:10%;\"> </li> </ul> </div> </HeaderTemplate><ItemTemplate><div class=\"BigDiv_line_rep\" onmouseover=\"javascript:this.style.backgroundColor='#EEF8F9'\" onmouseout=\"javascript:this.style.backgroundColor='#FFFFFF'\"><ul ><li style=\"line-height:22px;\"><asp:CheckBox ID=\"ItemCheckBox\" runat=\"server\" Text='<%# Eval(\"ID\") %>' EnableViewState=\"false\"/></li><li style=\"width:10%;\"></li></ul></div></ItemTemplate> <FooterTemplate><div class=\"DelAllButton\"><asp:Button ID=\"btn_DelAll\" runat=\"server\" onclick=\"btn_DelAll_Click\" CssClass=\"btn_DelAllCss\" Text=\"删除\" EnableViewState=\"false\"/></div></FooterTemplate></{0}:Repeater></div><!--Repeater End -->")]
public class Repeater : System.Web.UI.WebControls.Repeater
{
private int _recordcount = 0;
private int _pagesize = 0;
private string _pagelink = "";
private int _currentpage = 1;
/// <summary>
/// 构造函数
/// </summary>
public Repeater()
{ } #region __________属性__________ [Bindable(true), Category("Data"), DefaultValue("1"), Description("记录总数")]
public int RecordCount
{
get
{
return _recordcount;
} set
{
_recordcount = value;
}
} [Bindable(true), Category("Data"), DefaultValue("1"), Description("每页显示记录数")]
public int PageSize
{
get
{
return _pagesize;
} set
{
_pagesize = value;
}
} [Bindable(true), Category("Data"), DefaultValue(""), Description("当前页链接")]
public string PageLink
{
get
{
return _pagelink;
} set
{
_pagelink = value;
}
} [Bindable(true), Category("Data"), DefaultValue("1"), Description("当前页")]
public int CurrentPage
{
get
{
return _currentpage;
} set
{
_currentpage = value;
}
} #endregion /// <summary>
/// 输出html,在浏览器中显示控件
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
base.Render(output); output.WriteLine("<div class=\"PageLink\">" + Pagination(_recordcount, _pagesize, _currentpage, _pagelink) + "</div>");
} /// <summary>
/// 分页函数
/// </summary>
/// <param name="recordcount">总记录数</param>
/// <param name="pagesize">每页记录数</param>
/// <param name="currentpage">当前页数</param>
/// <param name="url">Url参数</param>
/// <returns></returns>
public string Pagination(int recordcount, int pagesize, int currentpage, string url)
{
int allcurrentpage = 0;
int next = 0;
int pre = 0;
int startcount = 0;
int endcount = 0;
string currentpagestr = ""; if (currentpage < 1) { currentpage = 1; }
//计算总页数
if (pagesize != 0)
{
allcurrentpage = (recordcount / pagesize);
allcurrentpage = ((recordcount % pagesize) != 0 ? allcurrentpage + 1 : allcurrentpage);
allcurrentpage = (allcurrentpage == 0 ? 1 : allcurrentpage);
}
next = currentpage + 1;
pre = currentpage - 1;
startcount = (currentpage + 5) > allcurrentpage ? allcurrentpage - 9 : currentpage - 4;//中间页起始序号
//中间页终止序号
endcount = currentpage < 5 ? 10 : currentpage + 5;
if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
if (allcurrentpage < endcount) { endcount = allcurrentpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
currentpagestr = "共" + allcurrentpage + "页      "; currentpagestr += currentpage > 1 ? "<a href=\"" + url + "?page=1\">首页</a>  <a href=\"" + url + "?page=" + pre + "\">上一页</a>" : "首页 上一页";
//中间页处理,这个增加时间复杂度,减小空间复杂度
for (int i = startcount; i <= endcount; i++)
{
currentpagestr += currentpage == i ? "  <font color=\"#ff0000\">" + i + "</font>" : "  <a href=\"" + url + "?page=" + i + "\">" + i + "</a>";
}
currentpagestr += currentpage != allcurrentpage ? "  <a href=\"" + url + "?page=" + next + "\">下一页</a>  <a href=\"" + url + "?page=" + allcurrentpage + "\">末页</a>" : " 下一页 末页";
return currentpagestr;
} }
}

  

最新文章

  1. IDF-CTF-牛刀小试-啥?
  2. javamail中的 javax.mail.AuthenticationFailedException: failed to connect
  3. Unity unsafe
  4. 转:StrictMode使用
  5. Web前端面试笔试题总结
  6. undefined symbol libiconv_open 完全解决方案
  7. 简答哈希实现 (nyoj 138 找球号2)
  8. Emag eht htiw Em Pleh(imitate)
  9. Product of Array Exclude Itself
  10. 爱斯达M2C服装定制系统介绍—在线播放—优酷网,视频高清在线观看
  11. js的this几种用法
  12. 【转】Android 图层引导帮助界面制作
  13. new del 问题
  14. java泛型探索——介绍篇
  15. OpenGL教程(2)——第一个窗口
  16. JVM学习一:JVM之类加载器概况
  17. 关于会话、进程、请求的几个常用SQL
  18. 论文笔记:Learning wrapped guidance for blind face restoration
  19. visualsvn的迁移及svn的一些问题
  20. What&#39;s the Difference Between Iterators and Generators in Python

热门文章

  1. 在Visual Studio中使用用例图描述参与者与用例的关系
  2. Task Parallel Library02,更进一步
  3. 报错:此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容
  4. Mac 安装zsh
  5. Java实现bt文件下载、制作、解析、磁力链接
  6. 犯罪现场调查第一季/全集CSI迅雷下载
  7. cocos2d-x 在输入文字时点击语音crash
  8. spring boot application.properties
  9. 解决Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 4
  10. 微信Access Token 缓存方法