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>(); List<Announcement> announcements = new List<Announcement>();
UserManager userManager = new UserManager(); UserManager userManager = new UserManager();
if (c == null) if (c == null || c < 0)
{ {
c = 10; c = 10;
} }
if (p == null) if (p == null || p < 0)
{ {
p = 0; p = 0;
} }
using (SqlConnection conn = CreateConnection()) 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 sqlCommand = new SqlCommand(sql, conn);
sqlCommand.Parameters.AddWithValue("@start", p * c); sqlCommand.Parameters.AddWithValue("@start", p * c);
sqlCommand.Parameters.AddWithValue("@count", c); sqlCommand.Parameters.AddWithValue("@count", c);

View File

@@ -73,17 +73,17 @@ namespace StudentHouseDashboard.Repositories
public List<User> GetUsersByPage(int? p, int? c) public List<User> GetUsersByPage(int? p, int? c)
{ {
List<User> users = new List<User>(); 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; p = 0;
} }
using (SqlConnection conn = CreateConnection()) 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 sqlCommand = new SqlCommand(sql, conn);
sqlCommand.Parameters.AddWithValue("@start", p * c); sqlCommand.Parameters.AddWithValue("@start", p * c);
sqlCommand.Parameters.AddWithValue("@count", c); sqlCommand.Parameters.AddWithValue("@count", c);

View File

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

View File

@@ -11,7 +11,11 @@ namespace WebApp.Pages
public void OnGet(int? p, int? c) public void OnGet(int? p, int? c)
{ {
UserManager = new UserManager(); 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("page", p);
ViewData.Add("allCount", UserManager.GetAllUsers().Count()); ViewData.Add("allCount", UserManager.GetAllUsers().Count());
} }