From be0b1dced213a074c734fafe15b980c02bbfdd82 Mon Sep 17 00:00:00 2001 From: digitaldirk <22691956+digitaldirk@users.noreply.github.com> Date: Fri, 26 Apr 2024 11:50:37 -0700 Subject: [PATCH 1/2] Update MudDataGrid.razor.cs to work with MudPagination MudDataGrid only had a Page (last, next, first,...) based NavigateTo method. Added a int based NavigateTo. Inspired by the MudTableBase version. --- .../Components/DataGrid/MudDataGrid.razor.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/MudBlazor/Components/DataGrid/MudDataGrid.razor.cs b/src/MudBlazor/Components/DataGrid/MudDataGrid.razor.cs index 779417747c4..9694400aba6 100644 --- a/src/MudBlazor/Components/DataGrid/MudDataGrid.razor.cs +++ b/src/MudBlazor/Components/DataGrid/MudDataGrid.razor.cs @@ -1190,6 +1190,17 @@ public void NavigateTo(Page page) GroupItems(); } + /// + /// Navigates to a specific page when the data grid has an attached MudPagination component. + /// + /// Index of the page to navigate to. + public void NavigateTo(int pageIndex) + { + CurrentPage = Math.Min(Math.Max(0, pageIndex), numPages - 1); + + GroupItems(); + } + /// /// Sets the rows displayed per page when the data grid has an attached data pager. /// From 88c09ed37791482902377b904f5f5c873d0f8d27 Mon Sep 17 00:00:00 2001 From: digitaldirk <22691956+digitaldirk@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:49:35 -0700 Subject: [PATCH 2/2] Update DataGridTests.cs to include NavigateTo(int) tests Added tests for int based NavigateTo method --- .../Components/DataGridTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/MudBlazor.UnitTests/Components/DataGridTests.cs b/src/MudBlazor.UnitTests/Components/DataGridTests.cs index 5b7f34ea208..74d31325e58 100644 --- a/src/MudBlazor.UnitTests/Components/DataGridTests.cs +++ b/src/MudBlazor.UnitTests/Components/DataGridTests.cs @@ -519,6 +519,20 @@ public async Task DataGridPaginationTest() // navigate back to the first page programmatically await comp.InvokeAsync(() => dataGrid.Instance.NavigateTo(Page.First)); dataGrid.Instance.CurrentPage.Should().Be(0); + + // Test MudPagination int base NavigateTo + int pagecount = (int)Math.Ceiling((double)(dataGrid.Instance.Items.Count() / dataGrid.Instance.RowsPerPage)); + // navigate to the last page programmatically + await comp.InvokeAsync(() => dataGrid.Instance.NavigateTo(pagecount - 1)); + dataGrid.Instance.CurrentPage.Should().Be(4); + + // navigate to the previous page programmatically + await comp.InvokeAsync(() => dataGrid.Instance.NavigateTo(dataGrid.Instance.CurrentPage - 1)); + dataGrid.Instance.CurrentPage.Should().Be(3); + + // navigate back to the first page programmatically + await comp.InvokeAsync(() => dataGrid.Instance.NavigateTo(0)); + dataGrid.Instance.CurrentPage.Should().Be(0); }