Exemple #1
0
        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);
        }
Exemple #2
0
        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));
                }
            }
        }