返回列表 发新帖

aspnet实现分页_分页

[复制链接]

12

主题

27

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2024-10-7 00:26:53  | 显示全部楼层 | 阅读模式
ASP.NET提供了一种简单有效的分页方法,通过设置PagedDataSource控件和GridView控件,可以轻松实现数据的分页显示。这种方法不仅易于使用,而且具有良好的性能和灵活性。
在ASP.NET中实现分页功能,可以使用内置的GridView控件和PagedList库,下面是一个详细的步骤:

zbhj1rdtt25ez42.jpg

zbhj1rdtt25ez42.jpg


(图片来源网络,侵删)
1. 安装PagedList库
在项目中使用PagedList库,首先需要安装它,可以通过NuGet包管理器来安装,在Visual Studio中,依次点击“工具”>“NuGet包管理器”>“管理解决方案的NuGet程序包”,然后搜索PagedList并安装。
2. 引入命名空间
在需要使用分页功能的页面的头部(aspx文件的头部),引入PagedList命名空间:
“`csharp

“`
3. 创建ViewModel类

zbhjk1we1kmixoq.png

zbhjk1we1kmixoq.png


(图片来源网络,侵删)
创建一个ViewModel类,用于封装数据和分页信息,创建一个名为ProductsViewModel的类:
“`csharp
public class ProductsViewModel
    public IPagedList Products { get; set; }
    public int PageNumber { get; set; } = 1;
    public int PageSize { get; set; } = 10;
“`
4. 查询数据并分页

zbhjk5ypdh0v42x.png

zbhjk5ypdh0v42x.png


(图片来源网络,侵删)
在Controller中,查询数据库并将数据分页,创建一个名为ProductsController的控制器:
“`csharp
public class ProductsController : Controller
    private readonly ApplicationDbContext _context;
    public ProductsController(ApplicationDbContext context)
    {
        _context = context;
    }
    public async Task[I] Index(int pageNumber = 1, int pageSize = 10)
    {
        var products = _context.Products.OrderBy(p => p.Id).ToList();
        var model = new ProductsViewModel { Products = await PagedList.CreateAsync(products, pageNumber, pageSize) };
        return View(model);
    }
“`
5. 在视图中使用GridView控件显示分页数据
在视图(Index.aspx)中,使用GridView控件显示分页数据:
“`html

“`
6. 添加分页导航栏
在视图中添加分页导航栏,以便用户可以跳转到不同的页面:
“`html

    当前页码:@Model.PageNumber 每页显示:@Model.PageSize 总记录数:@Model.Products.TotalItemCount 总页数:@Model.Products.TotalPages

    @Html.PagedListPager(Model.Products, page => Url.Action(“Index”, new { pageNumber = page, pageSize = Model.PageSize }))

“`
至此,ASP.NET中的分页功能已经实现,用户可以通过GridView控件查看分页数据,并通过分页导航栏跳转到不同的页面。

在ASP.NET中实现分页功能,通常情况下我们会结合 GridView 控件或者使用 Repeater 控件来手动实现,下面我将给出一个使用 GridView 控件实现分页的简单示例,并将其结果以介绍的形式展示。
你需要确保你的页面有一个 GridView 控件,并且在 Page_Load 事件中为其绑定数据源。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient; // 确保引入了 SQLClient 命名空间
public partial class PaginationExample : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        }
    }
    private void BindGrid()
    {
        string connString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connString))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT * FROM YourTableName", conn))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    sda.Fill(dt);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }
            }
        }
    }
}
在 aspx 页面中定义一个 GridView 控件如下:

   
        [tr]
            [td]列1标题[/td]
            [td]列2标题[/td]
            [td]列3标题[/td]
            
        [/tr]
   
    [I]
        [tr]
            [td][/td]
            [td][/td]
            [td][/td]
            
        [/tr]
    [/I]
   
        
            
            
            
            ' />
            
            
        
   
请注意以下几点:
1、AllowPaging="True" 属性启用分页功能。
2、PageSize="10" 属性设置每页显示的记录数。
3、PagerTemplate 是一个自定义分页模板,你可以根据需要自定义它的外观和行为。
当AllowPaging 设置为True 时,GridView 会自动处理分页逻辑,你可以通过PageIndexChanging 和PageIndexChanged 事件进一步控制分页行为,但是上面的示例中,默认行为已经足够使用。
请记得替换YourConnectionString 和YourTableName 为你的实际数据库连接字符串和表名。
代码将生成一个带有分页功能的介绍,每页显示10条记录,并带有第一页、上一页、下一页和最后一页的导航按钮。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表