DevExpress 用戶控件 分頁(中)
來源:程序員人生 發布時間:2015-05-26 07:40:00 閱讀次數:3563次
說明:
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 第1頁、上1頁、下1頁、最后1頁
/// <summary>
/// 第1頁、上1頁、下1頁、最后1頁 點擊事件
/// </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();
//只有1頁
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;
}//第1頁
else if (pageIndex <= 1)
{
this.datanavi.Buttons.CustomButtons[0].Enabled = false;
this.datanavi.Buttons.CustomButtons[1].Enabled = false;
}//最后1頁
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);
}
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈