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}页"; } } } }