From c50fe11529c8b0c479ccb3975e519b96f3ce736d Mon Sep 17 00:00:00 2001
From: Drake53 <49623303+Drake53@users.noreply.github.com>
Date: Sat, 2 Apr 2022 10:48:44 +0200
Subject: [PATCH] Fix pager for empty table.
---
src/BlazorTable/Components/Pager.razor | 12 ++++++------
src/BlazorTable/Components/Table.razor.cs | 17 ++++++++++++-----
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/BlazorTable/Components/Pager.razor b/src/BlazorTable/Components/Pager.razor
index 8cd3332e..c4a3b238 100644
--- a/src/BlazorTable/Components/Pager.razor
+++ b/src/BlazorTable/Components/Pager.razor
@@ -34,17 +34,17 @@
}
-
Table.FirstPageAsync())" title="@Localization["PagerFirst"]">
- @Localization["PagerFirst"]
+ Table.FirstPageAsync())" title="@Localization["PagerFirst"]">
+ @Localization["PagerFirst"]
- Table.PreviousPageAsync())" title="@Localization["PagerPrevious"]">
- @Localization["PagerPrevious"]
+ Table.PreviousPageAsync())" title="@Localization["PagerPrevious"]">
+ @Localization["PagerPrevious"]
Table.NextPageAsync())" title="@Localization["PagerNext"]">
@Localization["PagerNext"]
- Table.LastPageAsync())" title="@Localization["PagerLast"]">
- @Localization["PagerLast"]
+ Table.LastPageAsync())" title="@Localization["PagerLast"]">
+ @Localization["PagerLast"]
diff --git a/src/BlazorTable/Components/Table.razor.cs b/src/BlazorTable/Components/Table.razor.cs
index 57c959c3..fa64b7d9 100644
--- a/src/BlazorTable/Components/Table.razor.cs
+++ b/src/BlazorTable/Components/Table.razor.cs
@@ -186,10 +186,14 @@ private IEnumerable GetData()
}
// if the current page is filtered out, we should go back to a page that exists
- if (PageNumber > TotalPages)
+ if (PageNumber >= TotalPages)
{
PageNumber = TotalPages - 1;
}
+ else if (PageNumber < 0 && TotalPages > 0)
+ {
+ PageNumber = 0;
+ }
// if PageSize is zero, we return all rows and no paging
return PageSize <= 0 ? ItemsQueryable.ToList() : ItemsQueryable.Skip(PageNumber * PageSize).Take(PageSize).ToList();
@@ -292,7 +296,7 @@ public void RemoveColumn(IColumn column)
///
public async Task FirstPageAsync()
{
- if (PageNumber != 0)
+ if (PageNumber > 0)
{
PageNumber = 0;
detailsViewOpen.Clear();
@@ -331,9 +335,12 @@ public async Task PreviousPageAsync()
///
public async Task LastPageAsync()
{
- PageNumber = TotalPages - 1;
- detailsViewOpen.Clear();
- await UpdateAsync().ConfigureAwait(false);
+ if (PageNumber + 1 < TotalPages)
+ {
+ PageNumber = TotalPages - 1;
+ detailsViewOpen.Clear();
+ await UpdateAsync().ConfigureAwait(false);
+ }
}
///