using DataEntity.Page;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using XCommon.Log;
using UserControl = System.Windows.Controls.UserControl;
namespace XHandler.View.Page
{
///
/// 分页组件
///
public partial class PagerToolsControl : UserControl
{
#region 变量
///
/// 当前页改变时发生
///
public event C_EventClass.OnPagerIndexChangedEventHandler PageCntChanged = null;
///
/// 每页行数改变时发生
///
public event C_EventClass.OnPagerNumChangedEventHandler OnePageRowCntChanged = null;
///
/// 总页数
///
public int Total
{
get { return nAllPageCnt; }
}
///
/// 数据总数
///
[Description("数据总数"), Browsable(false)]
public int DataCount
{
get { return nAllDataCount; }
set
{
nAllDataCount = value;
nAllPageCnt = ((nAllDataCount + nOnePageRowCnt - 1) / nOnePageRowCnt);
tBoxDataCnt.Text = aDataCountLable.Replace("#count", nAllDataCount.ToString());
UpdataTotal();
}
}
///
/// 当前页数
///
[Description("当前页"), Browsable(false)]
public int Current
{
get { return nCurrentPageNo; }
set
{
if (value < 1)
{
value = 1;
}
else if (value > nAllPageCnt)
{
value = nAllPageCnt;
}
nCurrentPageNo = value;
UpdataCurrent();
}
}
///
/// 每页行数
///
[Description("每页的行数"), Browsable(false)]
public int PagerNum
{
get { return nOnePageRowCnt; }
set
{
nOnePageRowCnt = value;
isTrigger = false;
/*更新完每页行数,要先更新总页数,再触发相关事件*/
nAllPageCnt = ((nAllDataCount + nOnePageRowCnt - 1) / nOnePageRowCnt);
UpdataTotal();
UpdataCurrent();
isTrigger = true;
OnPagerNumChanged();
}
}
///
/// 是否触发事件
///
[Description("控制分页组件是否响应事件,主要用于代码设置分页组件,而不触发事件"), Browsable(false)]
public bool IsTrigger
{
get { return isTrigger; }
set { isTrigger = value; }
}
[Description("设置或获取数据总数的显示消息内容;#count 为占位符,将自动替换成数据总数")]
public string DataCountLable
{
get
{
return aDataCountLable;
}
set
{
aDataCountLable = value;
}
}
private string aDataCountLable = "共 #count 行";
///
/// 总页数
///
private int nAllPageCnt = 0;
///
/// 数据总数
///
private int nAllDataCount = 0;
///
/// 当前页数
///
private int nCurrentPageNo = 0;
///
/// 每页行数
///
private int nOnePageRowCnt = PaginationDefaultParameter.PageSize;
///
/// 每页行数列表
///
private List OnePageRowCntList = new List(new int[] { 15, 30, 50, 70, 100 });
///
/// 是否需要触发相关事件
///
private bool isTrigger = true;
///
/// 触发事件的当前页号,用来防止当前页改变时的二次触发
///
private int nTriggerPageNo = 0;
#endregion
#region 构造函数
public PagerToolsControl()
{
InitializeComponent();
//Dock = DockStyle.Bottom;
tBoxDataCnt.Text = aDataCountLable;
isTrigger = false;
foreach (int iObj in OnePageRowCntList)
{
cBoxOnePageRowCnt.Items.Add(iObj);
}
cBoxOnePageRowCnt.SelectedIndex = 0;
isTrigger = true;
}
#endregion
#region 页面初始化
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
try
{
DataCount = 0;
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
///
/// 更新总页数
///
private void UpdataTotal()
{
//tlab_total.Text = string.Format(tlab_total.Tag.ToString(), aTotal);
cBoxPageCnt.Items.Clear();
for (int i = 0; i < nAllPageCnt; i++)
{
cBoxPageCnt.Items.Add(i + 1);
}
cBoxPageCnt.SelectedIndex = 0;
if (nCurrentPageNo > nAllPageCnt)
Current = nAllPageCnt;
else
{
cBoxPageCnt.SelectedIndex = nCurrentPageNo - 1;
OnPagerIndexChanged();
UpdataView();
}
}
///
/// 更新当前页
///
private void UpdataCurrent()
{
tBoxCurrentPageNo.Text = nCurrentPageNo.ToString();
cBoxPageCnt.SelectedIndex = nCurrentPageNo - 1;
UpdataView();
OnPagerIndexChanged();
}
///
/// 更新界面
///
private void UpdataView()
{
if (nAllPageCnt == 0)
{
gridFirstPage.IsEnabled = gridLastPage.IsEnabled
= gridNextPage.IsEnabled = gridPreviousPage.IsEnabled
= tBoxCurrentPageNo.IsEnabled
= cBoxPageCnt.IsEnabled = false;
return;
}
if ((nCurrentPageNo == 1) && (nCurrentPageNo < nAllPageCnt))
{
gridFirstPage.IsEnabled = gridPreviousPage.IsEnabled = false;
gridLastPage.IsEnabled = gridNextPage.IsEnabled
= tBoxCurrentPageNo.IsEnabled
= cBoxPageCnt.IsEnabled = true;
}
else if ((nCurrentPageNo == 1) && (nCurrentPageNo == nAllPageCnt))
{
gridFirstPage.IsEnabled = gridPreviousPage.IsEnabled
= gridLastPage.IsEnabled = gridNextPage.IsEnabled
= false;
tBoxCurrentPageNo.IsEnabled
= cBoxPageCnt.IsEnabled = true;
}
else if ((nCurrentPageNo > 1) && (nCurrentPageNo < nAllPageCnt))
{
gridFirstPage.IsEnabled = gridPreviousPage.IsEnabled
= gridLastPage.IsEnabled = gridNextPage.IsEnabled
= tBoxCurrentPageNo.IsEnabled
= cBoxPageCnt.IsEnabled = true;
}
else if ((nCurrentPageNo > 1) && (nCurrentPageNo == nAllPageCnt))
{
gridLastPage.IsEnabled = gridNextPage.IsEnabled = false;
gridFirstPage.IsEnabled = gridPreviousPage.IsEnabled
= tBoxCurrentPageNo.IsEnabled
= cBoxPageCnt.IsEnabled = true;
}
}
///
/// 更新每页行数
///
private void UpdataPagerNum()
{
if ((cBoxOnePageRowCnt.SelectedItem != null) && (nOnePageRowCnt == ((int)cBoxOnePageRowCnt.SelectedItem)))
{
return;
}
foreach (object iItem in cBoxOnePageRowCnt.Items)
{
if (((int)iItem) == nOnePageRowCnt)
{
cBoxOnePageRowCnt.SelectedItem = iItem;
return;
}
}
}
///
/// 当前页改变时调用事件
///
private void OnPagerIndexChanged()
{
if (!isTrigger) return;
//if (nTriggerPageNo == nCurrentPageNo) return;
if (PageCntChanged != null)
{
C_EventArgsClass iObj = new C_EventArgsClass();
iObj.CurrentPageNo = nCurrentPageNo;
iObj.Total = nAllPageCnt;
Mouse.OverrideCursor = Cursors.Wait;
PageCntChanged(this, iObj);
Mouse.OverrideCursor = null;
nTriggerPageNo = nCurrentPageNo;
}
}
///
/// 每页行数改变时调用事件
///
private void OnPagerNumChanged()
{
if (!isTrigger) return;
if (OnePageRowCntChanged != null)
{
C_EventArgsClass iObj = new C_EventArgsClass();
iObj.CurrentPageNo = nCurrentPageNo;
iObj.Total = nAllPageCnt;
iObj.PagerNum = nOnePageRowCnt;
Mouse.OverrideCursor = Cursors.Wait;
OnePageRowCntChanged(this, iObj);
Mouse.OverrideCursor = null;
}
}
///
/// 首页
///
///
///
private void btnFirstPage_Click(object sender, RoutedEventArgs e)
{
Current = 1;
}
///
/// 上一页
///
///
///
private void btnPreviousPage_Click(object sender, RoutedEventArgs e)
{
Current--;
}
///
/// 尾页
///
///
///
private void btnLastPage_Click(object sender, RoutedEventArgs e)
{
Current = nAllPageCnt;
}
///
/// 次页
///
///
///
private void btnNextPage_Click(object sender, RoutedEventArgs e)
{
Current++;
}
//private void tcomb_current_SelectedIndexChanged(object sender, EventArgs e)
//{
// //Current = tcomb_current.SelectedIndex + 1;
//}
///
/// 页数变更
///
///
///
private void cBoxPageCnt_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Current = cBoxPageCnt.SelectedIndex + 1;
}
///
/// 每页行数变更
///
///
///
private void cBoxOnePageRowCnt_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!isTrigger) return;
PagerNum = (int)cBoxOnePageRowCnt.SelectedItem;
}
#region Del
//private void ttxt_current_KeyPress(object sender, KeyPressEventArgs e)
//{
// //if (e.KeyChar == 13)
// //{
// // Current = int.Parse(ttxt_current.Text);
// //}
// //if (e.KeyChar != 8)//退格键
// //{
// // if ((e.KeyChar < '0') || (e.KeyChar > '9'))
// // e.Handled = true;
// //}
//}
//private void tcom_num_KeyPress(object sender, KeyPressEventArgs e)
//{
// //if (e.KeyChar == 13)
// //{
// // int ipagernum = int.Parse(tcom_num.Text);
// // if (!aPagerNumList.Contains(ipagernum))
// // {
// // aPagerNumList.Add(ipagernum);
// // tcom_num.Items.Add(ipagernum);
// // aIsTrigger = false;
// // tcom_num.SelectedItem = ipagernum;
// // aIsTrigger = true;
// // }
// // //UpdataPagerNum();
// // PagerNum = int.Parse(tcom_num.Text);
// //}
// //if (e.KeyChar != 8)//退格键
// //{
// // if ((e.KeyChar < '0') || (e.KeyChar > '9'))
// // e.Handled = true;
// //}
//}
#endregion
}
}