ldj/DeinuPageControl/Pager.cs

315 lines
9.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#region
/*---------------------------------------------------------------------*
// 项目 名称《Winform分页控件》
// 文 件 名: Pager.cs
// 描 述: 分页控件
// 作 者kwon yan
*----------------------------------------------------------------------*/
#endregion
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 DeiNiu.Utils;
namespace DeiNiu.Controls.pager
{
/**/
/// <summary>
/// 申明委托
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public delegate int EventPagingHandler(EventPagingArg e);
/**/
/// <summary>
/// 分页控件呈现
/// </summary>
public partial class Pager : UserControl
{
public Pager()
{
InitializeComponent();
this.bindingNavigator1.LayoutStyle = ToolStripLayoutStyle.HorizontalStackWithOverflow;
this.bindingNavigator1.AutoSize = true;
}
public event EventPagingHandler EventPaging;
/**/
/// <summary>
/// 每页显示记录数
/// </summary>
private int _pageSize = 100;//Utils.WmsConstants.PAGER_SIZE;
/**/
/// <summary>
/// 每页显示记录数
/// </summary>
public int PageSize
{
get { return _pageSize; }
set
{
_pageSize = value;
GetPageCount();
}
}
private int _nMax = 0;
/**/
/// <summary>
/// 总记录数
/// </summary>
public int NMax
{
get { return _nMax; }
set
{
_nMax = value;
GetPageCount();
}
}
private int _pageCount = 0;
/**/
/// <summary>
/// 页数=总记录数/每页显示记录数
/// </summary>
public int PageCount
{
get { return _pageCount; }
set { _pageCount = value; }
}
private int _pageCurrent = 0;
/**/
/// <summary>
/// 当前页号
/// </summary>
public int PageCurrent
{
get {
// _pageCurrent = _pageCurrent > _pageCount ? _pageCount : _pageCurrent;
// _pageCurrent = _pageCurrent == 0 && _pageCount > 0 ? 1 : _pageCurrent;
return _pageCurrent;
}
set { _pageCurrent = value; }
}
/// <summary>
/// 设置页面大小
/// </summary>
private void GetPageCount()
{
if (this.NMax > 0)
{
this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
// lblPageCount.Text = " / " + PageCount.ToString();
lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
//lblPageCount1.Text = "每页 "+PageSize .ToString ()+" 条,共 "+PageCount.ToString()+" 页";
// lblPageCount1.Text = "Page no: " + PageSize.ToString() + ",Total:" + PageCount.ToString() + " pages";
// lblPageCount1.Text = PageSize.ToString() + "/" + PageCount.ToString() ;
}
else
{
this.PageCount = 0;
}
}
/**/
/// <summary>
/// 翻页控件数据绑定的方法 关键是这步,都是调用这里
/// </summary>
public void Bind(bool query=true )
{
try
{
NMax = 0;
if (query && this.EventPaging != null)
{
this.NMax = this.EventPaging(new EventPagingArg(this.PageCurrent));
}
if (this.PageCurrent > this.PageCount)
{
this.PageCurrent = this.PageCount;
}
if (this.PageCount == 1)
{
this.PageCurrent = 1;
}
lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
lblRecordCount.Text = "共" + NMax.ToString() + "条";
// lblRecordCount.Text = "Total: " + NMax.ToString() + " records";
btnPrev.Enabled = true;
btnFirst.Enabled = true;
btnLast.Enabled = true;
btnNext.Enabled = true;
if (this.PageCurrent == 1)
{
this.btnPrev.Enabled = false;
this.btnFirst.Enabled = false;
}
if (this.PageCurrent == this.PageCount)
{
this.btnLast.Enabled = false;
this.btnNext.Enabled = false;
}
if (this.NMax == 0)
{
btnNext.Enabled = false;
btnLast.Enabled = false;
btnFirst.Enabled = false;
btnPrev.Enabled = false;
}
cmbPagecount.Items.Clear();
for (int i = 1; i <= PageCount; i++)
{
cmbPagecount.Items.Add(i.ToString());
//if(i== PageCurrent - 1){
// cmbPagecount.SelectedItem = cmbPagecount.Items[i - 1];
//}
}
this.cmbPagecount.SelectedIndexChanged -= new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
cmbPagecount.SelectedIndex = PageCurrent - 1;
this.cmbPagecount.SelectedIndexChanged += new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
comPagesize.Items.Clear();
for (int i = 100; i <= 900; i += 100)
{
comPagesize.Items.Add(i.ToString());
}
/*
for (int i = 50; i <= 500; i+=50)
{
comPagesize.Items.Add(i.ToString());
}
*/
for (int i = 1000; i <= 9000; i += 1000)
{
comPagesize.Items.Add(i.ToString());
}
this.comPagesize.SelectedIndexChanged -= new System.EventHandler(this.comPagesize_SelectedIndexChanged);
// comPagesize.SelectedIndex = this._pageSize / 100 -1;
// comPagesize.SelectedIndex = this._pageSize / 50 - 1 ;
comPagesize.SelectedIndex = _pageSize <= 1000 ? this._pageSize / 100 - 1 : 10 + _pageSize / 1000 - 2;
this.comPagesize.SelectedIndexChanged += new System.EventHandler(this.comPagesize_SelectedIndexChanged);
}
catch (Exception er)
{
}
}
/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFirst_Click(object sender, EventArgs e)
{
PageCurrent = 1;
this.Bind();
}
//上一页
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnPrev_Click(object sender, EventArgs e)
{
PageCurrent -= 1;
if (PageCurrent <= 0)
{
PageCurrent = 1;
}
this.Bind();
}
/// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNext_Click(object sender, EventArgs e)
{
this.PageCurrent += 1;
if (PageCurrent > PageCount)
{
PageCurrent = PageCount;
}
this.Bind();
}
/// <summary>
/// 最后页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnLast_Click(object sender, EventArgs e)
{
PageCurrent = PageCount;
this.Bind();
}
/// <summary>
/// 转到新页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void btnGo_Click(object sender, EventArgs e)
{
if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
{
this.Bind();
}
}
private void cmbPagecount_SelectedIndexChanged(object sender, EventArgs e)
{
if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
{
this.Bind();
}
}
private void comPagesize_SelectedIndexChanged(object sender, EventArgs e)
{
if (Int32.TryParse(comPagesize.SelectedItem.ToString(), out _pageSize))
{
GetPageCount();
this.Bind();
}
}
private void lblRecordCount_Click(object sender, EventArgs e)
{
}
}
/**/
/// <summary>
/// 自定义事件数据基类
/// </summary>
public class EventPagingArg : EventArgs
{
private int _intPageIndex;
public EventPagingArg(int PageIndex)
{
_intPageIndex = PageIndex;
}
}
}