pagination working

(TODO: check for remaining pages)
This commit is contained in:
Dimitar Byalkov
2023-03-30 00:42:34 +02:00
parent 5c0eb222a4
commit 78eba13712
4 changed files with 40 additions and 17 deletions

View File

@@ -54,17 +54,17 @@ namespace StudentHouseDashboard.Repositories
{
List<Announcement> announcements = new List<Announcement>();
UserManager userManager = new UserManager();
if (c == null)
if (c == null || c < 0)
{
c = 10;
}
if (p == null)
if (p == null || p < 0)
{
p = 0;
}
using (SqlConnection conn = CreateConnection())
{
string sql = "SELECT TOP(@count) * FROM Users WHERE ID > @start;";
string sql = "SELECT * FROM Announcements ORDER BY ID OFFSET @start ROWS FETCH NEXT @count ROWS ONLY;";
SqlCommand sqlCommand = new SqlCommand(sql, conn);
sqlCommand.Parameters.AddWithValue("@start", p * c);
sqlCommand.Parameters.AddWithValue("@count", c);

View File

@@ -73,17 +73,17 @@ namespace StudentHouseDashboard.Repositories
public List<User> GetUsersByPage(int? p, int? c)
{
List<User> users = new List<User>();
if (c == null)
if (c == null || c < 0)
{
c = 0;
c = 10;
}
if (p == null)
if (p == null || p < 0)
{
p = 0;
}
using (SqlConnection conn = CreateConnection())
{
string sql = "SELECT TOP(@count) * FROM Users WHERE ID > @start;";
string sql = "SELECT * FROM Users ORDER BY ID OFFSET @start ROWS FETCH NEXT @count ROWS ONLY;";
SqlCommand sqlCommand = new SqlCommand(sql, conn);
sqlCommand.Parameters.AddWithValue("@start", p * c);
sqlCommand.Parameters.AddWithValue("@count", c);

View File

@@ -4,6 +4,7 @@
@{
ViewData["Title"] = "Announcements";
List<User> users = (List<User>)ViewData["users"];
int currentPage = @Convert.ToInt32(ViewData["page"]);
}
@foreach (User user in users)
@@ -18,16 +19,34 @@
</div>
}
<nav aria-label="Page navigation example">
<br />
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
<li class="page-item disabled">
<a class="page-link" href="#" tabindex="-1">Previous</a>
</li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item">
<a class="page-link" href="#">Next</a>
@if (currentPage <= 1)
{
@: <li class="page-item disabled">
@: <a class="page-link" href="./Announcements?p=@(currentPage - 1)" tabindex="-1">Previous</a>
@: </li>
}
else
{
@: <li class="page-item">
@: <a class="page-link" href="./Announcements?p=@(currentPage - 1)" tabindex="-1">Previous</a>
@: </li>
@: <li class="page-item"><a class="page-link" href="./Announcements?p=@(currentPage - 1)">@(currentPage - 1)</a></li>
}
<li class="page-item"><a class="page-link">@currentPage</a></li>
@if (users.Count == 0)
{
@: <li class="page-item disabled">
}
else
{
@: <li class="page-item"><a class="page-link" href="./Announcements?p=@(currentPage + 1)">@(currentPage + 1)</a></li>
@: <li class="page-item">
}
<a class="page-link" href="./Announcements?p=@(currentPage + 1)">Next</a>
</li>
</ul>
</nav>

View File

@@ -11,7 +11,11 @@ namespace WebApp.Pages
public void OnGet(int? p, int? c)
{
UserManager = new UserManager();
ViewData.Add("users", UserManager.GetUsersByPage(p, c));
if (p == null || p < 1)
{
p = 1;
}
ViewData.Add("users", UserManager.GetUsersByPage(p - 1, c));
ViewData.Add("page", p);
ViewData.Add("allCount", UserManager.GetAllUsers().Count());
}