说明:
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); } } }
时间: 2024-10-10 21:46:26