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;
|
using DevExpress.Utils;
|
using System.Threading.Tasks;
|
|
namespace MFire.WinFrmUI
|
{
|
/// <summary>
|
/// 分页控件
|
/// </summary>
|
public partial class PagerCtrl : XtraUserControl
|
{
|
public PagerCtrl()
|
{
|
InitializeComponent();
|
}
|
|
/// <summary>
|
/// 查询分页数据事件
|
/// </summary>
|
/// 第一个参数为CurrentPage
|
/// 第二个参数为PageSize
|
/// 第三个参数为返回的总条数
|
public event Func<int,int,Task<int>> QueryPageEvent;//返回总条数
|
|
private int _pageSize = 40;//单页条数
|
private int _pageIndex = 1;//当前页
|
private int _total = 0;//总条数
|
private int _pageNumber = 0;//总页数
|
|
/// <summary>
|
/// 被动查询
|
/// </summary>
|
public void PassiveQuery(bool reset=true)
|
{
|
if (reset)
|
{
|
_pageIndex = 1;
|
}
|
Query();
|
}
|
|
//内部查询
|
private async void Query()
|
{
|
this.txtPageIndex.Text = _pageIndex.ToString();
|
if (this.QueryPageEvent != null)
|
{
|
_total =await this.QueryPageEvent(_pageIndex,_pageSize);
|
_pageNumber = CalcuPageCount(_total, _pageSize);
|
this.labTotal.Text = $"共 {_total} 条";
|
this.labPageCount.Text= $"共 {_pageNumber} 页";
|
|
if (_pageIndex >= _pageNumber)
|
{
|
this.btnNext.Enabled = false;
|
this.btnLast.Enabled = false;
|
}
|
else
|
{
|
this.btnNext.Enabled = true;
|
this.btnLast.Enabled = true;
|
}
|
|
if (_pageIndex <= 1)
|
{
|
this.btnPre.Enabled = false;
|
this.btnFirst.Enabled = false;
|
}
|
else
|
{
|
this.btnPre.Enabled = true;
|
this.btnFirst.Enabled = true;
|
}
|
}
|
}
|
|
//计算页数
|
private int CalcuPageCount(int total, int pageSize)
|
{
|
if (total % pageSize > 0)
|
return total / pageSize + 1;
|
return total / pageSize;
|
}
|
|
//首页
|
private void btnFirst_Click(object sender, EventArgs e)
|
{
|
_pageIndex = 1;
|
Query();
|
}
|
|
//上一页
|
private void btnPre_Click(object sender, EventArgs e)
|
{
|
_pageIndex--;
|
Query();
|
}
|
|
//下一页
|
private void btnNext_Click(object sender, EventArgs e)
|
{
|
_pageIndex++;
|
Query();
|
}
|
|
//末页
|
private void btnLast_Click(object sender, EventArgs e)
|
{
|
_pageIndex = _pageNumber;
|
Query();
|
}
|
|
//单页条数改变
|
private void imgCmbPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
_pageSize = (int)this.imgCmbPageSize.EditValue;
|
_pageNumber = CalcuPageCount(_total,_pageSize);
|
if (_pageIndex > _pageNumber)
|
_pageIndex = _pageNumber;
|
Query();
|
}
|
|
//跳转
|
private void btnGo_Click(object sender, EventArgs e)
|
{
|
_pageIndex = int.Parse(this.txtToPageIndex.Text);
|
Query();
|
}
|
|
}
|
}
|