C#页码导航显示及算法实现代码


在C#中实现一个页码导航的显示及算法,通常涉及计算总页数、当前页码、起始页码和结束页码等。以下是一个简单的示例,展示如何在C#中根据总记录数、每页显示记录数和当前页码来计算并显示页码导航。


using System;

public class PaginationHelper
{
    // 计算总页数
    public static int CalculateTotalPages(int totalRecords, int recordsPerPage)
    {
        return (int)Math.Ceiling((double)totalRecords / recordsPerPage);
    }

    // 生成页码导航字符串
    public static string GeneratePagination(int currentPage, int totalPages, int pageSize = 10)
    {
        if (totalPages <= 1)
        {
            return "1";
        }

        var pagination = new System.Text.StringBuilder();

        // 简化处理,这里只显示当前页前后各两页,以及首尾页
        int startPage = Math.Max(1, currentPage - 2);
        int endPage = Math.Min(totalPages, currentPage + 2);

        // 如果起始页小于3,显示前3页
        if (startPage < 3 && totalPages > 3)
        {
            endPage = Math.Min(totalPages, 5);
        }

        // 如果结束页大于总页数减2,显示最后3页
        if (endPage > totalPages - 2 && totalPages > 3)
        {
            startPage = Math.Max(1, totalPages - 4);
        }

        // 添加页码
        for (int i = startPage; i <= endPage; i++)
        {
            pagination.AppendFormat("{0} ", i);

            // 如果是当前页,则加粗显示(这里用*代替加粗)
            if (i == currentPage)
            {
                pagination.Append("*");
            }
        }

        // 如果总页数大于显示范围,添加省略号
        if (startPage > 1)
        {
            pagination.Insert(0, "1 ... ");
        }

        if (endPage < totalPages)
        {
            pagination.AppendFormat(" ... {0}", totalPages);
        }

        return pagination.ToString().Trim();
    }

    // 示例用法
    public static void Main(string[] args)
    {
        int totalRecords = 100; // 总记录数
        int currentPage = 5; // 当前页码
        int recordsPerPage = 10; // 每页显示记录数

        int totalPages = CalculateTotalPages(totalRecords, recordsPerPage);
        string pagination = GeneratePagination(currentPage, totalPages, recordsPerPage);

        Console.WriteLine($"Total Pages: {totalPages}");
        Console.WriteLine($"Pagination: {pagination}");
    }
}

在这个示例中,`CalculateTotalPages` 方法用于计算总页数,而 `GeneratePagination` 方法则用于生成页码导航的字符串表示。在 `Main` 方法中,我们设置了总记录数、当前页码和每页显示记录数,并调用了这两个方法来计算总页数和生成页码导航字符串。

请注意,这个示例中的页码导航生成逻辑是简化的,主要为了展示如何计算页码和生成基本的页码导航字符串。在实际应用中,您可能需要根据具体需求调整页码导航的显示逻辑和样式。