DevExpress 用户控件 分页(中)
说明:
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;
}
#endregion public 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;
//设置DataNavigator
DrawControl(false);
//设置LabControl
ShowLableInfo();
} /// <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); } }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
DevExpress 用户控件 分页(中)的更多相关文章
- DevExpress 用户控件 分页(上)
说明:使用用户控件分页,完成后,使用时非常简单,数据绑定,调用自己写的一个事件就OK了 前期准备工作: (1)添加一个用户控件 命名PageCtrl (2)打开代码: [csharp] view ...
- DevExpress 用户控件 分页(下)
分页控件调用 (1)初始化时: this.pageCtrl1.pageSize = 4; (2)数据绑定时: 从数据库中获取实时的 Public void LoadData(){ //这是只写有关分页 ...
- Web页面获取用户控件页面中服务器控件的值
用户控件页面后台: public string P_Name{get { return txt_P_name.Value; }set { txt_P_name.Value = value; }} We ...
- 如何在组件(Component中)模拟用户控件(UserControl)中FindForm()?
using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentM ...
- 无边框窗体、用户控件、Timer控件
一.无边框窗体1 最大化.最小化以及关闭按钮制作实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中,获取图片的路径Application.StartupPath + & ...
- devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现
1.项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列.如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例 ...
- 036. asp.netWeb用户控件之五使用用户控件实现分页数据导航
UserDataPager.ascx用户控件代码: <%@ Control Language="C#" AutoEventWireup="true" Co ...
- WPF MVVM 用户控件完成分页
项目中经常会有分页查询的情况,在WPF中我们可以通过用户控件完成分页 一下为分页控件的页面代码, <UserControl x:Class="Foundation.UCtrl.Next ...
- 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)
通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) 1.建立用户控件Pager.ascx 1.1 html </ASP:LABEL></TD> ...
随机推荐
- (转载).Net HttpPost的发送和接收示例代码
HttpPost在不同系统进行数据交互的时候经常被使用.它的最大好处在于直接,不像Webservice或者WCF需要wsdl作为一个双方的"中介".在安全性上,往往通过IP限制的方 ...
- Objective-C中的const ,extern,static
一.const 1>对于const,记住关键的一点,它只是修饰右边的变量. 例如: - (void)viewDidLoad { [super viewDidLoad]; // const两种用法 ...
- C# net部署图片分布式存储服务器的小案例
如果web服务用户多了,访问多了,用户上传的图片,文件等内容放在一块,想必服务器是承受不住的,这个时候,我们就需要考虑分布式存储的方法了. 如图所示:一个web服务器拖2个图片服务器 如何做到用户上传 ...
- 版本控制工具git入门
版本控制工具的历史 不说了,放张图 两者的区别:集中式需要一个中心服务器放置最新的文件,需要联网操作.分布式可以再不联网的情况下操作,前提要拥有版本库 git安装 略 github注册 略 如何在g ...
- UISearchBar -- 备忘
搜索功能的备忘 UISearchBar UISearchBar是一个搜索栏,继承自UIView,也是常用的控件之一,所以特别写一篇备忘方便以后做工具文章. 例子: let searchBar = UI ...
- Codeforces Round #198 (Div. 2) —— A
最水的题,可惜当时赶时间没有注意数据范围:暴力超时了! 其实应该用x,y的最大公约数来判断: 代码: #include<iostream> using namespace std; int ...
- Android软件开发之发送短信与系统短信库解析
今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDM ...
- Android 使用WakeLock
为了延长电池的使用寿命,Android设备会在一段时间后使屏幕变暗,然后关闭屏幕显示,最后停止CPU.WakeLock是一个电源管理系统服务功能,应用程序可以使用它来控制设备的电源状态. ...
- 结论: blocking_query 是当前堵塞其他会话正在运行的SQL.而不是原始堵塞SQL
查看当前session线程号 mysql> select connection_id(); +-----------------+ | connection_id() | +---------- ...
- Minimum Cost(最小费用最大流)
Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In his s ...