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);
}