ASP.NET 简单实现 List 数据分页对象工具类

橙色阳光 2021-01-22 ⋅ 19 阅读

介绍

在 ASP.NET 开发过程中,经常需要对列表数据进行分页展示。为了简化代码的编写,我们可以实现一个简单的分页对象工具类,用于封装分页的逻辑,并且可以支持在前端进行页面跳转、筛选和排序等操作。

实现步骤

定义分页对象

我们首先需要定义一个 Pagination<T> 类来表示分页对象,其中 T 表示要分页的数据类型。该类包含以下几个属性:

public class Pagination<T>
{
    public int PageSize { get; set; } // 每页显示的记录数
    public int CurrentPage { get; set; } // 当前页码
    public int TotalCount { get; set; } // 总记录数
    public List<T> Data { get; set; } // 当前页的数据

    public int TotalPages // 总页数
    {
        get { return (int)Math.Ceiling((double)TotalCount / PageSize); }
    }

    public bool HasPreviousPage // 是否有上一页
    {
        get { return CurrentPage > 1; }
    }

    public bool HasNextPage // 是否有下一页
    {
        get { return CurrentPage < TotalPages; }
    }
}

实现数据分页的方法

在分页对象中,我们还可以定义一个方法来实现数据分页的逻辑。在该方法中,我们可以根据当前页码和每页显示的记录数,从原始的数据集合中截取当前页的数据,并将其存储到 Data 属性中。

public Pagination<T> GetPagedData(List<T> source, int currentPage, int pageSize)
{
    var totalCount = source.Count;
    var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
    var data = source.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();

    return new Pagination<T>
    {
        PageSize = pageSize,
        CurrentPage = currentPage,
        TotalCount = totalCount,
        Data = data
    };
}

使用分页对象

在使用分页对象的时候,我们只需要创建一个 Pagination<T> 类的实例,并调用 GetPagedData 方法即可获取分页后的数据。

var source = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
var pageSize = 3;
var currentPage = 2;

var pagination = GetPagedData(source, currentPage, pageSize);

// 输出当前页的数据
foreach (var item in pagination.Data)
{
    Console.WriteLine(item);
}

// 输出分页信息
Console.WriteLine($"Total pages: {pagination.TotalPages}");
Console.WriteLine($"Has previous page: {pagination.HasPreviousPage}");
Console.WriteLine($"Has next page: {pagination.HasNextPage}");

总结

通过实现一个简单的分页对象工具类,我们可以方便地在 ASP.NET 项目中对列表数据进行分页展示。该工具类允许我们指定每页显示的记录数,并自动计算出总页数和当前页的数据,同时提供了方便的属性来判断是否有上一页和下一页。这样可以大大减少代码的编写量,提高开发效率。


全部评论: 0

    我有话说: