public void NavigateToPage(MatPaginatorAction direction, int pageSize) { var page = this.Page; switch (direction) { case MatPaginatorAction.Default: break; case MatPaginatorAction.First: page = 0; break; case MatPaginatorAction.Previous: page--; break; case MatPaginatorAction.Next: page++; break; case MatPaginatorAction.Last: page = this.TotalPages - 1; break; default: throw new ArgumentOutOfRangeException(nameof(direction), direction, null); } if (page < 0) { page = 0; } if (page >= this.TotalPages) { page = this.TotalPages - 1; } this.Page = page; this.PageChanged.InvokeAsync(page); }
public async Task NavigateToPage(MatPaginatorAction direction, int pageSize) { var pageSizeChanged = pageSize != PageSize; var totalPages = CalculateTotalPages(pageSize); var page = PageIndex; if (pageSizeChanged) { try { page = ((PageIndex * PageSize) / pageSize); } catch (OverflowException e) { } } try { checked { switch (direction) { case MatPaginatorAction.Default: break; case MatPaginatorAction.First: page = 0; break; case MatPaginatorAction.Previous: page--; break; case MatPaginatorAction.Next: page++; break; case MatPaginatorAction.Last: page = totalPages; break; default: throw new ArgumentOutOfRangeException(nameof(direction), direction, null); } } } catch (Exception e) { } if (page < 0) { page = 0; } if (totalPages - page <= 1) { page = TotalPages == 0 ? 0 : TotalPages - 1; } if (PageIndex != page || pageSize != PageSize) { PageIndex = page; PageSize = pageSize; await Page.InvokeAsync(new MatPaginatorPageEvent() { PageIndex = page, PageSize = pageSize, Length = Length, }); // ParentDataTable?.Update(); } }
public async Task NavigateToPage(MatPaginatorAction direction, string pageSizeText) { int pageSize = GetPageSizeFromPageSizeText(pageSizeText); var pageSizeChanged = pageSize != PageSize; var totalPages = CalculateTotalPages(pageSize); var page = PageIndex; if (pageSizeChanged) { try { if (PageSize != null) { page = (PageIndex * PageSize.Value) / pageSize; } else { page = 0; } } catch { page = 0; } } try { checked { switch (direction) { case MatPaginatorAction.Default: break; case MatPaginatorAction.First: page = 0; break; case MatPaginatorAction.Previous: page--; break; case MatPaginatorAction.Next: page++; break; case MatPaginatorAction.Last: page = totalPages; break; default: throw new ArgumentOutOfRangeException(nameof(direction), direction, null); } } } catch (Exception) { } if (page < 0) { page = 0; } if (totalPages - page <= 1) { page = TotalPages == 0 ? 0 : totalPages - 1; } if (PageIndex != page || pageSize != PageSize) { PageIndex = page; PageSizeText = pageSizeText; if (PageSizeOption != null) { await Page.InvokeAsync(new BetterPaginatorPageEvent(page, PageSizeOption, Length)); } } }