一个简单的分页控件,用来自定义分页用的

javafx自定义分页控件的实现 由于javafx自带的分页控件太小,自己又不会改javafx分页控件的大小只能自己花了多半天的时间简单的写了一个分页控件,可实现选中的按钮一直再中间效果图如下: 话不多说代码如下: package util; import javafx.scene.control.Button; import javafx.scene.layout.HBox; public class PagingUtil { //当前页 private static int current... 阅读详情

在做项目的过程中,最初采用Datagrid的默任的分页方式分页,后来发现对于大的数据量速度很慢,NET进程占用系统资源也很大,后来写了个分页的存储过程,每次取数据都只取当前页的,分页是分好了,但是发现翻页就没那么方便了,于是自己写了个简单的分页控件,如下图所示:

程序代码:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace PageInfoControl
{
 /// <summary>
 /// WebCustomControl1 的摘要说明。
 /// </summary>
 [DefaultProperty("TotalRecord"),
  ToolboxData("<{0}:PageInfo runat=server></{0}:PageInfo>")]
 public class PageInfo : System.Web.UI.WebControls.WebControl,IPostBackEventHandler
 {
  #region Construct method
  /// <summary>
  /// 构造函数
  /// </summary>
  public PageInfo():base(HtmlTextWriterTag.Div)
  {

  }
  #endregion

  #region Variables and Constants
  
  public event EventHandler ChangePageClick;
  private string _BarBackGroundColor = "#F1F1F1";
  private string _BarLinkColor  = "Navy";
  private string _BarCurrentColor  = "#EEEEEE";
  private int    _TotalRecord   = 0;
  private int    _TotalPage   = 0;
  private int    _PageSize   = 0;
  private int    _CurrentPageIndex = 1;
  private int    _ItemSize   = 10;

  #endregion

  #region Properties

  [
  Description("分页条背景色"),
  Bindable(true),
  Category("Appearance"),
  DefaultValue("#F1F1F1")
  ]
  public string BarBackGroundColor
  {
   get{return _BarBackGroundColor;}
   set{_BarBackGroundColor = value;}
  }

  [
  Description("分页条带链接数字颜色"),
  Bindable(true),
  Category("Appearance"),
  DefaultValue("Navy")
  ]
  public string BarLinkColor
  {
   get{return _BarLinkColor;}
   set{_BarLinkColor = value;}
  }

  [
  Description("分页条当前页数字颜色"),
  Bindable(true),
  Category("Appearance"),
  DefaultValue("#EEEEEE")
  ]
  public string BarCurrentColor
  {
   get{return _BarCurrentColor;}
   set{_BarCurrentColor = value;}
  }

  [
  Description("总记录数"),
  Bindable(false),
  Category("Behavior"),
  DefaultValue(0)
  ]
  public int TotalRecord
  {
   get{return _TotalRecord;}
   set
   {
    foreach(char c in System.Convert.ToString(value)) 
    { 
     if (!Char.IsNumber(c)) 
     { 
      _TotalRecord = 0;
      break;
     } 
    } 
    _TotalRecord = value;
   }
  }

  [
  Description("每页显示记录数"),
  Bindable(true),
  Category("Behavior"),
  DefaultValue(0)
  ]
  public int PageSize
  {
   get{return _PageSize;}
   set
   {
    foreach(char c in System.Convert.ToString(value)) 
    { 
     if (!Char.IsNumber(c)) 
     { 
      _PageSize = 0;
      break;
     } 
    } 
    _PageSize = value;
   }
  }

  [
  Description("总页数"),
  Bindable(true),
  Category("Behavior"),
  DefaultValue(0)
  ]
  public int TotalPage
  {
   get{return _TotalPage;}
  }

  [
  Description("数字规格"),
  Bindable(true),
  Category("Behavior"),
  DefaultValue(10)
  ]
  public int ItemSize
  {
   get{return _ItemSize;}
   set
   {
    foreach(char c in System.Convert.ToString(value)) 
    { 
     if (!Char.IsNumber(c)) 
     { 
      _ItemSize = 10;
      break;
     } 
    } 
    _ItemSize = value;
   }
  }

  [
  Description("当前页值"),
  Bindable(true),
  Category("Behavior"),
  DefaultValue(1)
  ]
  public int CurrentPageIndex
  {
   get{return _CurrentPageIndex;}
   set{_CurrentPageIndex = value;}
  }


  #endregion

  //定义Div的样式
  protected override void AddAttributesToRender(HtmlTextWriter writer)
  {
   writer.AddStyleAttribute("White-space","nowrap");
   writer.AddStyleAttribute("Padding-Top","2px");
   writer.AddStyleAttribute("Padding-Bottom","2px");
   writer.AddStyleAttribute("Width",Width.ToString());
   writer.AddStyleAttribute("Height",Height.ToString());
   base.AddAttributesToRender (writer);
  }

  protected virtual void OnPageChangeClick(EventArgs e)
  {
   if (ChangePageClick != null) 
   {
    ChangePageClick(this, e);
   }
  }

  public void RaisePostBackEvent(string eventArgument)
  {
   int PageIndex   = int.Parse(eventArgument);
   this._CurrentPageIndex = PageIndex;
   OnPageChangeClick(new EventArgs());
  }

  /// <summary>
  /// 将此控件呈现给指定的输出参数。
  /// </summary>
  /// <param name="output"> 要写出到的 HTML 编写器 </param>
  protected override void RenderContents(HtmlTextWriter output)
  {
   this._TotalPage   = ((this.TotalRecord / PageSize) * this.PageSize == this.TotalRecord)?(this.TotalRecord / this.PageSize):((this.TotalRecord / this.PageSize) + 1);
   int BeginRecord   = (this.CurrentPageIndex - 1) * this.PageSize + 1;
   int EndRecord   = this.CurrentPageIndex * this.PageSize;
   EndRecord    = (EndRecord>this.TotalRecord)?this.TotalRecord:EndRecord;
   string PageInfo   = "[共<font color=#CC0000>"+this.TotalPage.ToString()+"</font>页/当前第<font color=#CC0000>"+this.CurrentPageIndex.ToString()+"</font>页   共<font color=#CC0000>"+TotalRecord.ToString()+"</font>条记录,当前记录数<font color=#CC0000>"+BeginRecord.ToString()+"</font>到<font color=#CC0000>"+EndRecord.ToString()+"</font>]";
   string PageListStr  = "";
   string PageIndexColor = "#0000C0";
   int SingleNumber  = this.TotalPage - (TotalPage/ItemSize) * ItemSize; //得到分页后的尾数(比如:总共58页,按10页规格显示,则尾数为8)
   int IntPageForMax  = (this.CurrentPageIndex - 1) / ItemSize;
   int MinInt    = (1 + ItemSize * IntPageForMax);
   int MaxInt    = ((IntPageForMax + 1) * ItemSize)>TotalPage?TotalPage:((IntPageForMax + 1) * ItemSize);
   if(this.TotalRecord == 0 || this.TotalPage == 0)
   {
    PageListStr  = "<font color="+PageIndexColor+">0</font>";
    PageListStr  = PageListStr + " [共<font color=#CC0000>0</font>页/当前第<font color=#CC0000>0</font>页   共<font color=#CC0000>0</font>条记录,当前记录数<font color=#CC0000>0</font>到<font color=#CC0000>0</font>]";
    output.Write(PageListStr);
   }
   else
   {
    if(this.TotalPage <= this.ItemSize)
    {
     for(int i = 1;i <= TotalPage;i++)
     {
      PageIndexColor = CurrentPageIndex==i?"#CC0000":"#0000C0";
      if(CurrentPageIndex == i)
       PageListStr  = PageListStr + " <a title='当前为第『"+i+"』页' href='#' id=/"" + this.UniqueID + "/"><font color="+PageIndexColor+">"+i.ToString()+"</font></a>";
      else
       PageListStr  = PageListStr + " <a title='点击转到第『"+i+"』页' id=/"" + this.UniqueID + "/" href=/"javascript:" + Page.GetPostBackEventReference(this,i.ToString()) +"/"><font color="+PageIndexColor+">"+i.ToString()+"</font></a>";
     }
     PageListStr  = PageListStr ==""?"<font color="+PageIndexColor+">0</font>":PageListStr;
     PageListStr  = PageListStr + " "+PageInfo;
     output.Write(PageListStr);
    }
    else
    {
     for(int i = MinInt;i <= MaxInt;i++)
     {
      PageIndexColor  = CurrentPageIndex==i?"#CC0000":"#0000C0";
      if(CurrentPageIndex == i)
       PageListStr  = PageListStr + " <a title='当前为第『"+i+"』页' href='#' id=/"" + this.UniqueID + "/"><font color="+PageIndexColor+">"+i.ToString()+"</font></a>";
      else
       PageListStr  = PageListStr + " <a title='点击转到第『"+i+"』页' id=/"" + this.UniqueID + "/" href=/"javascript:" + Page.GetPostBackEventReference(this,i.ToString()) +"/"><font color="+PageIndexColor+">"+i.ToString()+"</font></a>";
     }
     //当当前页数小于ItemSize且总的页数大于ItemSize时 
     if(CurrentPageIndex <= ItemSize && TotalPage > ItemSize)
     {
      PageListStr = PageListStr + " <a id=/"" + this.UniqueID + "/" title='点击转到第『"+System.Convert.ToString(ItemSize + 1)+"』页' href=/"javascript:" + Page.GetPostBackEventReference(this,System.Convert.ToString(ItemSize + 1)) +"/">>></a>";
     }
     //当当前页数大于ItemSize,且总的页数减去当前页数大于等于尾数值页数时
     if(this.CurrentPageIndex > ItemSize && (TotalPage - this.CurrentPageIndex) >= SingleNumber)
     {
      int MultiMinPageIndex = (IntPageForMax * ItemSize);
      int MultiMaxPageIndex = ((IntPageForMax+1) * ItemSize) + 1;
      PageListStr = "<a id=/"" + this.UniqueID + "/" title='点击转到第『"+MultiMinPageIndex+"』页' href=/"javascript:" + Page.GetPostBackEventReference(this,MultiMinPageIndex.ToString()) +"/"><<</a>" + PageListStr.Trim() + "<a id=/"" + this.UniqueID + "/" title='点击转到第『"+MultiMaxPageIndex+"』页' href=/"javascript:" + Page.GetPostBackEventReference(this,MultiMaxPageIndex.ToString()) +"/">>></a>";
     }
     //当当前页数大于ItemSize,且总的页数减去当前页数大于等于尾数值页数时
     if(CurrentPageIndex > 10 && (TotalPage - CurrentPageIndex) < SingleNumber)
     {
      int MultiMinPageIndex = (IntPageForMax * ItemSize);
      PageListStr = "<a id=/"" + this.UniqueID + "/" title='点击转到第『"+MultiMinPageIndex+"』页' href=/"javascript:" + Page.GetPostBackEventReference(this,MultiMinPageIndex.ToString()) +"/"><<</a>" + PageListStr.Trim();
     }

     PageListStr  = PageListStr ==""?"<font color="+PageIndexColor+">0</font>":PageListStr;
     PageListStr  = PageListStr + " "+PageInfo;
     output.Write(PageListStr);
    }
   }
   base.RenderContents(output);
  }
 }
}


控件中有几个相关的属性,在使用的时候,只需要指定:TotalRecord(总记录数)、PageSize(每页的数据记录数)、CurrentPageIndex(当前页面值)、ItemSize(分页条显示页面值的规格)
控件中有个ChangePageClick事件,可以利用“控件ID.CurrentPageIndex”属性来获取当前页面值。

自定义控件,自定义分页控件,winform分页控件,分页办法 1. 查询一张表,把他的记录集显示在datagridview中. 2. 要分页显示.,分页效果如下 首页 前一页 后一页 尾页 第 页 共 条记录 3. 可以用前台的方式,或数据库的方式,或者ado.net的方式. 4. 用winform程序实现 立即下载

相关推荐

WinForm自定义分页控件

WinForm自定义分页控件完整实例,导入可用

C# WinForm自定义通用分页控件

Winform 自定义控件--通用分页控件 C/S通用 .Net FrameWork

bsx133的博客 2650

分页控件(自定义分页控件)

该分页控件可以接受datatable和一条sql语句。该控件绑定datatable或sql语句后,就无需将gridview绑定数据源,也可以自定义页面pagesize。

C# 自定义分页控件

C#自定义分页控件,该控件能够设置每页显示数量,动态显示页数,总页数,当前页数等

GengGeng7777的博客 1235

使用webdiyer控件来实现数据分页

在.net中使用webdiyer控件来实现数据分页。

Python量化入门:用pytdx获取800个交易日K线数据的完整指南(附代码)

本文为Python量化交易初学者提供了使用pytdx库免费获取股票日线级别K线数据的完整指南。文章详细介绍了从环境搭建、单只股票数据获取,到构建健壮的批量下载器、数据清洗与验证,再到基础分析与可视化的全流程,并附有可直接运行的代码示例,帮助读者快速建立本地股票数据库。

weixin_29050513的博客 1462

WinForms中DataGridView控件做一个类似于网站那样的分页功能

WinForms中DataGridView控件做一个类似于网站那样的分页功 在WinForms中使用DataGridView控件分页有两种情况:一、真分页.二、假分页。好,既然分了两种情况,那么我们就来谈一下什么是真分页,什么是假分页?先谈假分页吧!我们都知道,

紫声潇潇 1881

Android7以上抓取https数据包-无需root

手机内装一个虚拟机,然后在虚拟机内运行我需要抓包的应用,该虚拟机内是不需要证书验证的。完美解决android7.0以上https无法抓包的问题。

qq_45764684的博客 1454

我的分页控件(未完,待续)——控件件介绍及思路

 一、      工作的层次UI层和逻辑层。UI层:显示首页、末页、上一页、下一页、页号导航、文本框输入页号;共计多少条记录、多少页、当前页号等信息。逻辑层:提供分页算法(SQL语句),根据分页控件的属性,在运行的时候生成分页用的SQL语句。二、      流程l         设置分页控件的属性l         根据算法和属性生成SQL语句,通过“我的数据访问层”

jyk 金色海洋工作室 ASP.NET经验总结 5096

西门子【Automation Framework V1.2】AF架构:从软件栈到高效自动化项目的构建蓝图

本文深入解析西门子Automation Framework V1.2 (AF架构) 的核心价值与实施蓝图。该框架通过定义标准化的软件栈(如TIA Portal V19、STEP7、WinCC Unified)和严格的安装配置流程,将自动化项目开发从依赖个人经验的“手工作坊”模式,转变为高效、可复制的工业化模式。遵循此架构,工程师能快速构建稳定可靠的项目基础,规避环境冲突,从而专注于核心工艺与逻辑设计,大幅提升团队协作与项目交付效率。

weixin_29230059的博客 428

获取气体传感器温度调制响应数据并转换为NumPy数组

本任务旨在获取气体传感器在温度调制条件下的响应数据,将其处理为结构化数据格式(NumPy数组),以便用于机器学习模型训练。整个过程包含数据采集、预处理、特征工程和格式转换等关键步骤。

huanghm88的专栏 1207

自定义分页控件

开发时经常遇到用一个DataGrid分页显示数据的情况,然而Flex本身没有提供分页控件,给开发带来了不便。这里将自己开发时做的一个分页控件摆出来供刚入门的朋友参考。O(∩_∩)O~       采用BlazeDS与Java端通信   1. 一个Vo对象Page存放分页信息,以及相对应的Java端的Page对象 2. 一个很简单的自定义事件Page

一个人有了信仰,不管成不成功,至少不会迷茫。 893

PCB板设置20H 原则理解

20H原则是PCB设计中抑制EMI辐射的关键方法,要求电源层比相邻地层内缩20倍介质厚度(20H)。在四层板中实现20H原则需采用S-G-P-S层叠结构,确保GND与PWR紧邻。具体步骤包括:确定GND-PWR间介质厚度H,计算20H值(通常80-120mil),并在设计软件中将电源层四周内缩20H,同时保持地层完整不内缩。注意避免常见误区,如混淆介质厚度、地层内缩等。该原则能有效限制边缘场辐射,降低EMI干扰,是四层板EMC设计的重要规范。

qq_37999850的博客 690

千万级数据分页之二---一个简单的自定义分页控件

 千万级数据分页详细设计1.引言1.1目的为适应大数据量分页的需要,为以后千万级数据分页提供解决方法或者参考,节省开发时间,特制定本详细设计方案1.2主要阅读对象脚本设计人员1.3参考资料http://www.cnblogs.com/SGSoft/archive/2004/10/23/55800.html2.详细设计2.1分页存储过程2.1.1简介2

高山流水 6988

从零开始学习AI人工智能本体论:概念与实战

本文旨在为初学者提供一个全面而易于理解的人工智能本体论入门指南。我们将覆盖从基本概念到实际应用的全过程,帮助读者理解本体论在AI系统中的核心作用。核心概念与联系:介绍本体论的基本概念和原理核心算法与操作步骤:详细讲解本体构建和推理方法项目实战:通过实际案例展示本体论的应用实际应用场景:探讨本体论在不同领域的应用未来发展趋势:展望本体论在AI领域的前景本体论(Ontology): 在AI中,指对特定领域概念及其关系的明确形式化描述。

AI智能探索者的博客 867

【系统分析师】高分论文:论基于构件的软件开发(气象灾害影响评估系统)

本文以某手机气象灾害影响评估系统为例,探讨了基于构件技术的软件开发实践。通过分析开发中常见的功能模块重复问题,提出建立企业构件库、针对性选择构件和加强构件管理的解决方案。项目实施中成功复用登录模块等通用构件,并针对气象数据转换需求开发新构件,最终在8个月内高质量完成系统建设。文章总结了构件开发的三个关键点:构件库建设是基础、构件选择需精准、构件管理要规范。同时指出需注意全新需求开发、性能优化等问题,建议通过培训提升团队对构件的理解力。该案例证明构件技术能有效缩短周期、降低成本,为企业积累可复用的技术资产。

数据知道的博客 4253

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

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

dcnna0422的博客 341

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

本文介绍如何在高速通信情况下解决串口接收的数据来不及处理的问题,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 6807

一个简单实用的分页控件

 using System;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Text;namespace localhost{ ///  /// Pager 的摘要说明。 ///  public class Pager : Control {  private string _U

"小灰"的专栏 4336

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WPF 分页控件

刚接触WPF,直接给公司做第一个WPF进销存小项目,分页实用四个button实现的,做完后突然感觉自己太傻了。。。为什么不用自定义用户控件。。于是就写了个简单分页控件 布局: <UserControl x:Class="Com.FMS.View.UserControls.ZsmPager" xmlns="http://schemas.microsoft.c...

weixin_30770495的博客 204

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

.NET 分页帮助类

一直以来,分页是一个非常常见的需求,以前也用过很多的分页控件,现在自己参照之前用过的,自己写了一个非常简单实用的分页实现方法。

What If... 659

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

aspnetpager 分页控件 仿 淘宝 迅雷 拍拍 样式

<br /> <br />分页是Web应用程序中最常用到的功能之一,AspNetPager 简单实用,应用到项目后台中,棒极了!<br /> <br />自定义样式:<br /><mce:style type="text/css"><!-- /*拍拍网风格*/ .paginator { font: 11px Arial, Helvetica, sans-serif;padding:10px 20px 10px 0; margin: 0px;} .paginator a {padding: 1px

Hurbox的专栏 2131

WPF分页控件

WPF分页控件 本控件只支持.net framework4.7.2 一个简单实用的分页小控件(免积分下载),样式可以自定义修改,下面是成果图片和使用教程。 下面是分页控件的按钮样式,可以自己修改 <Window.Resources> <Style x:Key="PageButton" TargetType="{x:Type Button}"> <Setter Property="Background" Value="#e6e6e6"

猜猜我是谁的博客 332
上一篇: ASP.NET调用oracle存储过程实现快速分页
下一篇: 将DataGrid数据写入Excel文件。
PPLUNCLE
博客等级 码龄24年 3粉丝 51原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值