using DevExpress.XtraEditors;
using DW5S.Repostory;
using ExtensionsDev;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace DW5S.App.UserControl
{
public partial class CtrlPaging : DevExpress.XtraEditors.XtraUserControl
{
public delegate Task CurrentPageEventHandler(int currentPage);
///
/// 当前页数改变事件 当前页数
///
public event CurrentPageEventHandler CurrentPageChanged;
public delegate Task PageCountEventHandler(int pageCount);
///
/// 每页条数改变事件 每页条数
///
public event PageCountEventHandler PageCountChanged;
///
/// 总条数
///
private int TotalCount { get; set; } = 0;
///
/// 总页数
///
private int TotalPage { get; set; } = 0;
///
/// 当前页数
///
private int CurrentPage { get; set; } = 1;
public CtrlPaging()
{
InitializeComponent();
this.layoutControl1.UseDefault();
}
public async Task LoadData(int totalCount, int currentPage)
{
try
{
this.TotalCount = totalCount;
this.CurrentPage = currentPage;
var countPerPage = Convert.ToInt32(txtCountPerPage.Text);
this.TotalPage = TotalCount / countPerPage;
if (TotalCount % countPerPage != 0)
TotalPage++;
if (TotalPage == 1)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.Last.Enabled = false;
dataNavigator1.Buttons.NextPage.Enabled = false;
}
dataNavigator1.TextStringFormat = $"第{CurrentPage}页/共{TotalPage}页";
}
catch (Exception ex)
{
IocContainer.Logger.Error(ex,"加载星历信息异常");
DxHelper.MsgBoxHelper.ShowError("加载星历信息异常");
}
}
private async void dataNavigator1_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
if (e.Button.ButtonType == NavigatorButtonType.First)
{
CurrentPage = 1;
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
}
else if (e.Button.ButtonType == NavigatorButtonType.Last)
{
CurrentPage = TotalPage;
dataNavigator1.Buttons.Last.Enabled = false;
dataNavigator1.Buttons.NextPage.Enabled = false;
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
}
else if (e.Button.ButtonType == NavigatorButtonType.NextPage)
{
CurrentPage++;
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
if (CurrentPage >= TotalPage)
{
dataNavigator1.Buttons.Last.Enabled = false;
dataNavigator1.Buttons.NextPage.Enabled = false;
}
else
{
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
}
}
else if (e.Button.ButtonType == NavigatorButtonType.PrevPage)
{
CurrentPage--;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
if (CurrentPage == 1)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
}
}
await CurrentPageChanged?.Invoke(CurrentPage);
dataNavigator1.TextStringFormat = $"第{CurrentPage}页/共{TotalPage}页";
}
private async void btnGo_Click(object sender, EventArgs e)
{
int.TryParse(txtGoPage.Text, out int _currentPage);
if (_currentPage > TotalPage)
{
_currentPage = TotalPage;
}
if (_currentPage > 0)
{
CurrentPage = _currentPage;
if (CurrentPage == 1 && CurrentPage < TotalPage)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
}
else if (CurrentPage == 1 && CurrentPage == TotalPage)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
}
else if (CurrentPage == TotalPage)
{
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
dataNavigator1.Buttons.Last.Enabled = false;
dataNavigator1.Buttons.NextPage.Enabled = false;
if (dataNavigator1.Position == 0)
dataNavigator1.Position = 1;
}
else
{
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
dataNavigator1.Position = 1;
}
await CurrentPageChanged(CurrentPage);
dataNavigator1.TextStringFormat = $"第{CurrentPage}页/共{TotalPage}页";
}
}
private async void txtCountPerPage_EditValueChanged(object sender, EventArgs e)
{
int.TryParse(txtCountPerPage.Text, out int countPerPage);
if (countPerPage > 0)
{
this.TotalPage = TotalCount / countPerPage;
if (TotalCount % countPerPage != 0)
TotalPage++;
if (CurrentPage > TotalPage)
CurrentPage = TotalPage;
if (CurrentPage == 1 && CurrentPage < TotalPage)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
}
else if (CurrentPage == 1 && CurrentPage == TotalPage)
{
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
dataNavigator1.Buttons.First.Enabled = false;
dataNavigator1.Buttons.PrevPage.Enabled = false;
}
else if (CurrentPage == TotalPage)
{
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
dataNavigator1.Buttons.Last.Enabled = false;
dataNavigator1.Buttons.NextPage.Enabled = false;
}
else
{
dataNavigator1.Buttons.First.Enabled = true;
dataNavigator1.Buttons.PrevPage.Enabled = true;
dataNavigator1.Buttons.Last.Enabled = true;
dataNavigator1.Buttons.NextPage.Enabled = true;
dataNavigator1.Position = 1;
}
await PageCountChanged?.Invoke(CurrentPage);
dataNavigator1.TextStringFormat = $"第{CurrentPage}页/共{TotalPage}页";
}
}
}
}