说明:

1)具体调用请关注 看DevExpress 用户控件 分页(下)

datanavi_ButtonClick 是DataNavigator的ButtonClikc事件

视图设计器:


分页用户控件后台代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;namespace CYSoft.TS.UI.StudentInfo
{public partial class PageCtrl : DevExpress.XtraEditors.XtraUserControl{/// <summary>/// 自定义事件 当前页改变事件/// </summary>public event EventHandler CurrentPageChange;#region 定义分页 字段和属性private int m_recordCount = 0;/// <summary>/// 数据行总数/// </summary>public int recordCount{get { return m_recordCount; }set{SetFormCtrlEnable();this.m_recordCount = value;}}private int m_pageSize = 20;/// <summary>/// 每页显示的数据行数/// </summary>public int pageSize{get { return m_pageSize; }set { this.m_pageSize = value; }}private int m_pageIndex = 1;/// <summary>/// 当前页/// </summary>public int pageIndex{get { return m_pageIndex; }set { this.m_pageIndex = value; }}private int m_pageCount = 0;/// <summary>/// 总页数/// </summary>public int pageCount{get{if (m_pageSize != 0){m_pageCount = GetPageCount();}return m_pageCount;}}/// <summary>/// 获取总页数/// </summary>/// <returns></returns>private int GetPageCount(){if (pageSize == 0){return 0;}int num = 1;if (recordCount % pageSize == 0){num = recordCount / pageSize;}else{num = recordCount / pageSize + 1;}return num;}#endregionpublic PageCtrl(){InitializeComponent();}/// <summary>/// 设置DataNavigator按钮全部可用/// </summary>private void SetFormCtrlEnable(){this.datanavi.Buttons.CustomButtons[0].Enabled = true;this.datanavi.Buttons.CustomButtons[1].Enabled = true;this.datanavi.Buttons.CustomButtons[2].Enabled = true;this.datanavi.Buttons.CustomButtons[3].Enabled = true;}//DataNavigator 点击      private void datanavi_ButtonClick(object sender, NavigatorButtonClickEventArgs e){ShowEvent("ButtonClick", e.Button);}#region 第一页、上一页、下一页、最后一页/// <summary>/// 第一页、上一页、下一页、最后一页 点击事件/// </summary>/// <param name="eventString"></param>/// <param name="nbb"></param>void ShowEvent(string eventString, NavigatorButtonBase nbb){switch (nbb.Tag.ToString()){case "First":First();break;case "PrePage":PrePage();break;case "NextPage":NextPage();break;case "Last":Last();break;default:break;}DrawControl(true);}private void First(){m_pageIndex = 1;}private void PrePage(){m_pageIndex = Math.Max(1, m_pageIndex - 1);}private void NextPage(){m_pageIndex = Math.Min(pageCount, m_pageIndex + 1);}private void Last(){m_pageIndex = pageCount;}#endregion/// <summary>/// 设置DataNavigator按钮是否可用/// </summary>/// <param name="callEvent">是否当前页</param>private void DrawControl(bool callEvent){if (callEvent && CurrentPageChange != null){//当前页事件CurrentPageChange(this, null);}//设置按钮全部可用this.SetFormCtrlEnable();//只有一页if (recordCount <= 1){this.datanavi.Buttons.CustomButtons[0].Enabled = false;this.datanavi.Buttons.CustomButtons[1].Enabled = false;this.datanavi.Buttons.CustomButtons[2].Enabled = false;this.datanavi.Buttons.CustomButtons[3].Enabled = false;}//第一页else if (pageIndex <= 1){this.datanavi.Buttons.CustomButtons[0].Enabled = false;this.datanavi.Buttons.CustomButtons[1].Enabled = false;}//最后一页else if (pageIndex >= pageCount){this.datanavi.Buttons.CustomButtons[2].Enabled = false;this.datanavi.Buttons.CustomButtons[3].Enabled = false;}}/// <summary>/// 加载LableControl/// </summary>private void ShowLableInfo(){if (!this.Created){return;}this.BeginInvoke((MethodInvoker)delegate{try{if (!DesignMode){this.labelControl1.Text = "总行数:" + recordCount + "      当前页:" + pageIndex + "/" + pageCount + "    ";}}catch { }});}/// <summary>/// 分页控件加载/// </summary>/// <param name="count">数据总行数</param>private void DrawControl(int count){m_recordCount = count;//设置DataNavigatorDrawControl(false);//设置LabControlShowLableInfo();}/// <summary>/// 设置分页数据控件/// </summary>/// <param name="currentPageIndex">当前页</param>/// <param name="pageSize2">每页显示行数</param>/// <param name="recordTotal">总行数</param>public void SetPageCtrl(int currentPageIndex, int pageSize2, int recordTotal){pageIndex = currentPageIndex;recordCount = recordTotal;pageSize = pageSize2;DrawControl(recordTotal);}}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/Jackerson/p/4631961.html

DevExpress 用户控件 分页(中)相关推荐

  1. Web页面获取用户控件页面中服务器控件的值

    用户控件页面后台: public string P_Name { get { return txt_P_name.Value; } set { txt_P_name.Value = value; } ...

  2. [MOSS开发]:如何使用用户控件

    如果是纯手工开发web part,其实还是比较困难的,因为这种类型的web part是以类库的形式出现,没有可视化的界面,完全由代码写出来,包含控件的样式,属性,事件等等.开发过自定义控件的朋友可能会 ...

  3. 解决用户控件循环引用的笨办法

    在上一篇中提到使用MagicAjax开发了一个项目,因为做这个项目之前对MagicAjax不是很了解,在里面使用了用户控件,我发现这是一个很致命的错误,用户控件在MagicAjax中用起来很痛苦.   ...

  4. DevExpress控件GridControl中的布局详解 【转】

    DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28|  分类: devexpress |  标签:devexpress  |举报|字号 订阅 h ...

  5. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  6. 用户控件中动态加入脚本引用

    用户控件中动态加入脚本引用,添加前先判断是否已经有引用,没有才添加. //××××.ascx protected void Page_Load(object sender, EventArgs e){ ...

  7. 关于从页面中获取用户控件中的其它控件(如DropDownList)事件的方法

    在项目中经常把一些经常使用的代码做成用户控件以提高代码的可重用性, 一个经常遇到的就是在页面中调用用户控件中的服务器控件的事件,下面给出简单的代码示列. 我们在一个用户控件(MaterialRepor ...

  8. 在用户控件中用户登录后台脚本判断

    在用户控件中用户登录后台脚本判断写法  if (!IsPostBack)         {                         imagelogin.Attributes.Add(&qu ...

  9. 如何在用户控件中操作页面中的控件?

    一般来讲我们会把功能集中在ASCX文件实现,以便能够多次使用,但在某种情况下,我们可能会用到对用户控件所在的页面容器进行操作. 其实如果想一下,道理也很简单,如果ASCX被使用了,其会出现在页面容器中 ...

最新文章

  1. GIT在测试过程中的基本使用
  2. python 多态 知乎_Python函数接口的一些设计心得
  3. Python工程能力进阶、数学基础、经典机器学习模型实战、深度学习理论基础和模型调优技巧……胜任机器学习工程师岗位需要学习什么?...
  4. join 子查询 效率_MySQL查询在A表不在B表的记录
  5. 十问十答 Ms-PL 许可证
  6. MySQL group_concat函数使用详解
  7. Londiste3 Install
  8. asp.net mvc源码分析-Action篇 ParameterDescriptor
  9. android应用程序开发宝典,android应用程序开发宝典.pdf
  10. html 输出helloworld,以及基本结构详解
  11. mysql同时满足升序和降序_mysql中的升序和降序以及一个字段升序和一个字段降序...
  12. servlet实现统计网站访问量
  13. 谷歌地图上不去了,用LSV就可以
  14. mac电脑最好用的图片浏览器,没有之一
  15. 在VS中怎么用vb画矩形_怎样画颜色绚丽的插画?
  16. Visual Studio 2019的下载及安装
  17. xp系统打印机服务器win7连接不了,xp不能访问win7共享打印机
  18. 经验转行产品经理|纯经验分享
  19. 中国电信新拳头业务:全球眼
  20. PyHook3详细教程

热门文章

  1. [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub)
  2. GridView控件中的一些常见问题
  3. Trie 树内存消耗问题
  4. 新发现的两个Delphi要点。
  5. mysql 自然排序_如何在mysql中实现自然排序
  6. 金税盘怎么安装在电脑上_金税盘怎么安装,电脑重装后怎样安装金税盘税控开票软件?...
  7. DMA流程简介--CPU/内存/网卡之间的交互
  8. MySQL step by step 安装实战
  9. (117)System Verilog类继承详解
  10. python连接mysql_Python连接MYSQL数据库