基于jquery的分页控件(C#)

基于jQuery的分页控件(C#)攻略

概述

本文将介绍如何使用jQuery编写基于C#的分页控件。分页控件可以提高页面的易读性和易用性,方便用户查看数据。

分页控件的实现方式

实现一个分页控件主要分为两个部分:

  1. 服务端代码,用于提供数据或者查询数据(本文中使用C#做演示)。
  2. 客户端代码,用于实现分页控件的交互和显示(本文中使用jQuery做演示)。

服务端代码

为了更好地演示实现过程,这里我将使用C#的AspNet MVC框架作为服务端的实现,它提供了很好的模板支持和工具集,方便我们快速地搭建出一个数据展示和分页的Web应用。

实现步骤

  1. 创建一个Asp.Net MVC应用。
  2. 配置路由(可以使用默认的)。
  3. 定义数据模型,这里以学生信息为例。
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 定义数据访问层,从数据库中获取分页数据。
public interface IStudentRepository
{
    int Count();
    List<Student> GetPageList(int pageIndex, int pageSize);
}

public class StudentRepository : IStudentRepository
{
    private readonly List<Student> _students;

    public StudentRepository()
    {
        _students = new List<Student>();
        for (int i = 1; i <= 100; i++)
        {
            _students.Add(new Student { Id = i, Name = $"Student{i}", Age = 18 });
        }
    }

    public int Count() => _students.Count;

    public List<Student> GetPageList(int pageIndex, int pageSize)
    {
        return _students.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
    }
}
  1. 实现控制器,调用数据访问层获得分页数据。
public class StudentController : Controller
{
    private readonly IStudentRepository _repository;

    public StudentController(IStudentRepository repository)
    {
        _repository = repository;
    }

    public ActionResult Index(int pageIndex = 1, int pageSize = 10)
    {
        var totalCount = _repository.Count();
        var pageList = _repository.GetPageList(pageIndex, pageSize);

        ViewBag.TotalCount = totalCount;

        return View(pageList);
    }
}

测试

在浏览器中输入http://localhost:xxx/Student/Index,即可看到分页数据的效果。如果要实现翻页功能,请看下一节。

客户端代码

实现步骤

  1. 导入jQuery和分页控件js文件(这里使用了jquery.pagination.js)。
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/jquery.pagination.js"></script>
  1. 创建分页控件容器。
<div id="pagination"></div>
  1. 在页面加载完成时初始化分页控件。
$(function () {
    initPagination();
});

function initPagination() {
    $("#pagination").pagination({
        totalData: $("#TotalCount").val(),
        showData: $("#PageSize").val(),
        pageCount: 0, // 分页总数,留空表示自动计算
        current: 1,   // 当前页码
        count: 5,     // 当前分页控件中显示的页码个数
        prevCls: "prev",   // 上一页样式
        nextCls: "next",   // 下一页样式
        activeCls: "active",      // 高亮样式
        coping: true,     // 是否显示首页、尾页
        isHide: true,     // 是否只有一页的时候隐藏分页控件
        homePage: "首页",
        endPage: "尾页",
        prevContent: "<",
        nextContent: ">",
        callback: function (pageIndex) {
            getData(pageIndex);
        }
    });
}

function getData(pageIndex) {
    $.ajax({
        type: "GET",
        url: "/Student/Index",
        data: { pageIndex: pageIndex },
        success: function (data) {
            // 刷新数据
            console.log(data);
        },
        error: function (e) {
            console.log(e);
        }
    });
}
  1. 获取分页数据。
public class StudentController : Controller
{
    private readonly IStudentRepository _repository;

    public StudentController(IStudentRepository repository)
    {
        _repository = repository;
    }

    public ActionResult Index(int pageIndex = 1, int pageSize = 10)
    {
        var totalCount = _repository.Count();
        var pageList = _repository.GetPageList(pageIndex, pageSize);

        ViewBag.TotalCount = totalCount;
        ViewBag.PageSize = pageSize;

        return View(pageList);
    }
}

测试

在浏览器中输入http://localhost:xxx/Student/Index,即可看到分页数据和分页控件的效果。您可以点击不同的页码来测试翻页效果。

示例

下面我将展示两个示例,一个是传统的分页效果,另一个是ajax分页。

传统分页

假设我们有一个学生列表,其中包含100条数据,每页显示10条数据。我们需要实现分页,并且每一页都需要从服务器获取数据。

public class HomeController : Controller
{
    private readonly IStudentRepository _repository;

    public HomeController(IStudentRepository repository)
    {
        _repository = repository;
    }

    [HttpGet]
    public IActionResult Index(int pageIndex = 1, int pageSize = 10)
    {
        var totalCount = _repository.Count();
        var pageList = _repository.GetPageList(pageIndex, pageSize);

        ViewBag.TotalCount = totalCount;
        ViewBag.PageSize = pageSize;

        return View(pageList);
    }
}
@model List<Student>

<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
    </tr>
    @foreach (var student in Model)
    {
        <tr>
            <td>@student.Id</td>
            <td>@student.Name</td>
            <td>@student.Age</td>
        </tr>
    }
</table>

<div id="pagination"></div>

<input type="hidden" id="TotalCount" value="@ViewBag.TotalCount" />
<input type="hidden" id="PageSize" value="@ViewBag.PageSize" />

@section scripts{
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="/js/jquery.pagination.js"></script>

    <script>
        $(function () {
            initPagination();
        });

        function initPagination() {
            $("#pagination").pagination({
                totalData: $("#TotalCount").val(),
                showData: $("#PageSize").val(),
                pageCount: 0,
                current: 1,
                count: 5,
                prevCls: "prev",
                nextCls: "next",
                activeCls: "active",
                coping: true,
                homePage: "首页",
                endPage: "尾页",
                prevContent: "<",
                nextContent: ">",
                callback: function (pageIndex) {
                    getData(pageIndex);
                }
            });
        }

        function getData(pageIndex) {
            $.ajax({
                type: "GET",
                url: "/Home/Index",
                data: { pageIndex: pageIndex },
                success: function (data) {
                    $("table tr:gt(0)").remove();
                    $.each(data, function (i, item) {
                        $("table").append("<tr><td>" + item.Id + "</td><td>" + item.Name + "</td><td>" + item.Age + "</td></tr>");
                    });
                },
                error: function (e) {
                    console.log(e);
                }
            });
        }
    </script>
}

Ajax分页

假设我们有一个学生列表,其中包含100条数据,每页显示10条数据。我们需要实现分页,并且每一页都使用Ajax异步获取数据(请求json格式数据)。

public class HomeController : Controller
{
    private readonly IStudentRepository _repository;

    public HomeController(IStudentRepository repository)
    {
        _repository = repository;
    }

    [HttpGet]
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public IActionResult GetPageList(int pageIndex = 1, int pageSize = 10)
    {
        var totalCount = _repository.Count();
        var pageList = _repository.GetPageList(pageIndex, pageSize);

        return Json(new { TotalCount = totalCount, PageList = pageList });
    }
}
<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody id="list">

    </tbody>
</table>

<div id="pagination"></div>

@section scripts{
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="/js/jquery.pagination.js"></script>

    <script>
        $(function () {
            initPagination();
        });

        function initPagination() {
            $("#pagination").pagination({
                totalData: $("#TotalCount").val(),
                showData: $("#PageSize").val(),
                pageCount: 0,
                current: 1,
                count: 5,
                prevCls: "prev",
                nextCls: "next",
                activeCls: "active",
                coping: true,
                homePage: "首页",
                endPage: "尾页",
                prevContent: "<",
                nextContent: ">",
                callback: function (pageIndex) {
                    getData(pageIndex);
                }
            });
        }

        function getData(pageIndex) {
            $.ajax({
                type: "POST",
                url: "/Home/GetPageList",
                data: { pageIndex: pageIndex },
                dataType: "json",
                success: function (data) {
                    $("#list").empty();
                    $.each(data.PageList, function (i, item) {
                        var html = "<tr><td>" + item.Id + "</td><td>" + item.Name + "</td><td>" + item.Age + "</td></tr>";
                        $("#list").append(html);
                    });

                    $("#pagination").pagination({
                        totalData: data.TotalCount,
                        pageCount: Math.ceil(data.TotalCount / $("#PageSize").val()),
                    });
                },
                error: function (e) {
                    console.log(e);
                }
            });
        }
    </script>
}

总结

通过以上步骤,我们就能够成功地实现基于jQuery的分页控件(C#)。通过自定义的样式和代码,我们能够快速地实现适用于不同场景的分页控件效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jquery的分页控件(C#) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • jquery1.4 教程二 ajax方法的改进

    jQuery是一种流行的JavaScript库,用于简化JavaScript编程。其中,ajax方法是jQuery中最常用的方法之一,用于向服务器发送异步请求。本文将提供详细的“jquery1.4教程二ajax方法的改进”的完整攻略,包括什么是ajax方法、ajax方法的改进以及两个示例。 什么是ajax方法? ajax方法是jQuery中最常用的方法之一,…

    C# 2023年5月15日
    00
  • c#中的常用ToString()方法总结

    C#中的常用ToString()方法总结 在C#编程中,ToString()方法是十分常用的方法之一。它用于将一个对象转化为字符串表示形式。本篇攻略将详细讲解C#中常用的ToString()方法及其用法。 ToString()方法的基本用法 在C#中,ToString()方法是定义在Object类中的虚方法,它可以被任意类型重写。因为所有类型都继承自Obje…

    C# 2023年6月1日
    00
  • ASP.NET将Session保存到数据库中的方法

    需要将 ASP.NET 的 Session 保存到数据库中,可以通过如下步骤实现: 步骤1:创建 SQL 数据库表 首先需要在 SQL Server 中创建一个用于存储 Session 数据的表,该表至少需要三个字段: SessionId(nvarchar类型):Session的唯一标识符。 Expires(datetime类型):Session的过期时间。…

    C# 2023年5月31日
    00
  • NI-DAQmx驱动安装完成后不能使用怎么办?

    当NI-DAQmx驱动安装完成后不能使用时,我们可以按照以下步骤进行解决: 1. 确认系统是否支持NI-DAQmx驱动 NI-DAQmx驱动有系统要求,如果不符合要求,则可能出现不能使用的情况。具体的系统要求可以参考NI官方网站上的文档。 示例1:比如NI-DAQmx驱动最低要求为Windows 7/10 64位操作系统,如果你在一个32位系统上安装NI-D…

    C# 2023年6月7日
    00
  • Asp.Net URL重写的具体实现

    下面我将为您详细讲解Asp.Net URL重写的具体实现。 什么是URL重写 URL重写是指通过将某个URL地址重写成另一个URL地址,来达到URL地址美化或处理URL地址映射的目的。在Web应用程序中,常见的URL重写方式有两种:一种是基于IIS的URL重写模块,另一种是基于Asp.Net的URL重写模块。 Asp.Net URL重写的具体实现 步骤一:启…

    C# 2023年5月31日
    00
  • C#面向对象之模拟实现商城购物功能

    C#面向对象模拟实现商城购物功能可以分为以下几个步骤: 1. 创建商品类(Product)及其属性 第一步我们需要创建一个商品类,用来保存商品的相关信息。在C#中,创建类非常简单,只需要使用class关键字即可,具体实现如下: class Product { // 商品名称 public string Name { get; set; } // 商品价格 p…

    C# 2023年5月31日
    00
  • c#读取文件详谈

    c#读取文件详谈 前言 在c#的应用中,读取文件是一项常见的操作。无论是读取文本文件、二进制文件,还是读取 Excel 文件、数据库文件,我们都需要用到 c# 读取文件的相关操作。在本篇文章中,我们将一步一步地讲解如何在 c# 中读取文件,希望对大家有所帮助。 读取文本文件 假设我们有一个文件叫做 text.txt,我们需要在 c# 中读取该文件中的数据。以…

    C# 2023年5月31日
    00
  • 使用VS2005自带的混淆器防止你的程序被反编译的方法

    使用VS2005自带的混淆器可有效防止程序被反编译,以下是详细的攻略: 1. 了解混淆器 混淆器是一种将代码转化为难读懂的形式,防止程序被反编译和分析的工具。VS2005自带的混淆器可以将程序的代码变为只有计算机才能读懂的形式,从而有效防止程序被反编译。 2. 使用混淆器 使用VS2005自带的混淆器可以很方便地对代码进行混淆。具体步骤如下: 步骤一:打开V…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部