asp.net 无刷新分页实例代码

ASP.NET 是一款开放源码的服务器端 Web 应用程序框架,提供了丰富的功能和强大的工具,为开发者提供了高效的方式来构建、部署和维护 Web 应用程序。无刷新分页是其中一个常见需求,本文将通过两个示例来演示如何实现ASP.NET无刷新分页功能。

示例1:使用AJAX实现无刷新分页

步骤1:创建数据库表和数据

CREATE TABLE [dbo].[Users](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [Age] [int] NOT NULL,
    [Gender] [nvarchar](10) NOT NULL,
    [Address] [nvarchar](100) NOT NULL
)

步骤2:创建数据访问类和方法

public class UserData
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
    public string Address { get; set; }
}
public class UserDA
{
    public static List<UserData> GetUserList(int pageIndex, int pageSize)
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = "select top (@pageSize) * from (select row_number() over (order by ID) as rownumber, ID, Name, Age, Gender, Address from Users) as t where rownumber > (@pageIndex-1)*@pageSize order by ID";
                cmd.Parameters.AddWithValue("@pageSize", pageSize);
                cmd.Parameters.AddWithValue("@pageIndex", pageIndex);
                con.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                List<UserData> userList = new List<UserData>();
                while (reader.Read())
                {
                    UserData user = new UserData();
                    user.ID = Convert.ToInt32(reader["ID"]);
                    user.Name = reader["Name"].ToString();
                    user.Age = Convert.ToInt32(reader["Age"]);
                    user.Gender = reader["Gender"].ToString();
                    user.Address = reader["Address"].ToString();
                    userList.Add(user);
                }
                return userList;
            }
        }
    }
    public static int GetUserCount()
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = "select count(*) from Users";
                con.Open();
                return Convert.ToInt32(cmd.ExecuteScalar());
            }
        }
    }
}

步骤3:编写前台页面

<!DOCTYPE html>
<html>
<head>
    <title>ASP.NET分页无刷新实例</title>
    <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
    <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet">
    <script type="text/javascript">
        $(document).ready(function () {
            LoadData(1);
        });

        function LoadData(pageIndex) {
            var pageSize = 10;
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetUserList",
                data: '{pageIndex: ' + pageIndex + ', pageSize: ' + pageSize + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var html = "";
                    for (var i = 0; i < data.d.length; i++) {
                        html += "<tr><td>" + data.d[i].Name + "</td><td>" + data.d[i].Age + "</td><td>" + data.d[i].Gender + "</td><td>" + data.d[i].Address + "</td></tr>";
                    }
                    $("#userTableBody").html(html);
                }
            });
        }
    </script>
</head>
<body>
    <div class="container">
        <h1>ASP.NET分页无刷新实例</h1>
        <table class="table">
            <thead>
                <tr>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>性别</th>
                    <th>地址</th>
                </tr>
            </thead>
            <tbody id="userTableBody">
            </tbody>
        </table>
        <nav>
            <ul class="pagination">
                <li class="page-item"><a class="page-link" href="javascript:void(0);" onclick="LoadData(1);">1</a></li>
                <li class="page-item"><a class="page-link" href="javascript:void(0);" onclick="LoadData(2);">2</a></li>
                <li class="page-item"><a class="page-link" href="javascript:void(0);" onclick="LoadData(3);">3</a></li>
                <li class="page-item"><a class="page-link" href="javascript:void(0);" onclick="LoadData(4);">4</a></li>
                <li class="page-item"><a class="page-link" href="javascript:void(0);" onclick="LoadData(5);">5</a></li>
            </ul>
        </nav>
    </div>
</body>
</html>

步骤4:编写后台代码

[WebMethod]
public static List<UserData> GetUserList(int pageIndex, int pageSize)
{
    List<UserData> userList = UserDA.GetUserList(pageIndex, pageSize);
    return userList;
}

示例2:使用Bootstrap和jQuery实现无刷新分页

步骤1:创建数据库表和数据

与示例1相同

步骤2:创建数据访问类和方法

与示例1相同

步骤3:编写前台页面

<!DOCTYPE html>
<html>
<head>
    <title>ASP.NET无刷新分页</title>
    <script src="https://cdn.bootcss.com/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script type="text/javascript">
        $(document).ready(function () {
            LoadData(1);
        });

        function LoadData(pageIndex) {
            var pageSize = 10;
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetUserList",
                data: '{pageIndex: ' + pageIndex + ', pageSize: ' + pageSize + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var html = "";
                    for (var i = 0; i < data.d.length; i++) {
                        html += "<div class='panel panel-default'><div class='panel-body'><p>姓名:" + data.d[i].Name + "</p><p>年龄:" + data.d[i].Age + "</p><p>性别:" + data.d[i].Gender + "</p><p>地址:" + data.d[i].Address + "</p></div></div>";
                    }
                    $("#userList").html(html);
                }
            });
        }

        function setPage(pageIndex) {
            var pageCount = 5;
            if ($("#btnPrefab").length <= 0) return;
            var goIndex = 1;
            if (pageIndex < 1) goIndex = 1;
            else if (pageIndex > pageCount) goIndex = pageCount;
            else {
                goIndex = pageIndex;
            }
            var html = "";
            if (goIndex != 1)
                html += "<li><a href='javascript:void(0);' onclick='LoadData(1);'>首页</a></li>";
            else
                html += "<li class='disabled'><a href='javascript:void(0);'>首页</a></li>";

            for (var i = 1; i <= pageCount; i++) {
                if (i == pageIndex)
                    html += "<li class='active'><a href='javascript:void(0);'>" + i + "</a></li>";
                else
                    html += "<li><a href='javascript:void(0);' onclick='LoadData(" + i + ");'>" + i + "</a></li>";
            }

            if (goIndex != pageCount)
                html += "<li><a href='javascript:void(0);' onclick='LoadData(" + pageCount + ");'>末页</a></li>";
            else
                html += "<li class='disabled'><a href='javascript:void(0);'>末页</a></li>";

            $("#btnPrefab").html(html);
        }
    </script>
</head>
<body>
    <div class="container">
        <h1>ASP.NET无刷新分页</h1>
        <div id="userList"></div>
        <ul id="btnPrefab" class="pagination"></ul>
    </div>
</body>
</html>

步骤4:编写后台代码

与示例1相同

以上就是两个例子的代码实现,可以根据自己的需求选择其中一种实现无刷新分页功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net 无刷新分页实例代码 - Python技术站

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

相关文章

  • 在C#中使用MSMQ的方法

    在C#中使用MSMQ是一种消息传递机制,用于在应用程序之间传递消息。MSMQ提供了可靠的消息传递,即使在网络故障或应用程序崩溃的情况下也能保证消息的传递。本文将提供详细的“在C#中使用MSMQ的方法”的完整攻略,包括什么是MSMQ、如何使用MSMQ以及两个示例。 什么是MSMQ? MSMQ是Microsoft Message Queuing的缩写,是一种消息…

    C# 2023年5月15日
    00
  • Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务

    下面是关于“Microsoft.NetRemoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务”的完整攻略,包含两个示例。 1. Marshal 在.NET Remoting中,Marshal是一个重要的类,用于将对象从一个应用程序域传输到另一个应用程序域。Marshal类提供了一组静态方法,用于创建远程对象、获取远程对象的代…

    C# 2023年5月15日
    00
  • ext combobox动态加载数据库数据(附前后台)

    下面是详细的“ext combobox动态加载数据库数据(附前后台)”攻略。 什么是 ext combobox? ext combobox 是一种基于 ExtJS 框架开发的下拉菜单组件,它可以非常方便的实现下拉菜单的各种交互功能,同时也可以动态加载数据库数据实现自动填充下拉列表。 ext combobox 动态加载数据库数据操作步骤 创建数据库表 我们需要…

    C# 2023年5月31日
    00
  • 浅谈ASP.NET Core的几种托管方式

    浅谈ASP.NET Core的几种托管方式 ASP.NET Core是一个跨平台的Web应用程序框架,可以在Windows、Linux和macOS上运行。在ASP.NET Core中,有几种不同的托管方式可供选择。本攻略将介绍ASP.NET Core的几种托管方式,并提供两个示例说明。 IIS托管 IIS是Windows操作系统中的Web服务器,可以使用II…

    C# 2023年5月16日
    00
  • 基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法

    下面给你详细讲解一下基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法的完整攻略。 问题概述 在Silverlight应用程序中使用DataGrid控件时,常常需要使用DatePicker控件来设置开始和结束日期筛选条件,但是如何无代码来实现这个功能呢? 解决方案 在Silverlight DataGrid控…

    C# 2023年6月1日
    00
  • 解析C#的扩展方法

    以下是解析C#的扩展方法的完整攻略: 什么是C#的扩展方法? C#的扩展方法是一种特殊的静态方法,可以向已存在的类添加新的方法。使用扩展方法可以使已经封装好的类变得更加灵活,方便开发者自定义其功能。 如何定义扩展方法? 定义扩展方法需要以下几个要素: 扩展方法必须被定义在静态类中。 扩展方法必须使用this关键字作为方法的第一个参数,表示需要扩展的类型。 扩…

    C# 2023年5月15日
    00
  • 提高C# StringBuilder操作性能优化的方法

    提高C# StringBuilder操作性能优化的方法 前言 StringBuilder是C#语言中常用的字符串操作类之一,用于对字符串进行动态操作,比如追加、替换、插入等。在进行大量字符串操作时,使用StringBuilder可以提高性能,而不必像使用字符串拼接时那样频繁创建和销毁字符串对象。但是,如果使用不得当,StringBuilder也可能出现性能问…

    C# 2023年6月8日
    00
  • C#9新特性init only setter的使用

    下面是”C#9新特性initonlysetter的使用”的完整攻略。 简介 在C# 9中,推出了一个新的修饰符 init。与 set 不同, init 可以在构造函数中初始化值,并保证在构造函数执行完后,其值不能再次修改。这种属性的更新只能在创建对象和构造函数之间进行。这个新特性非常有意义,因为它可以让我们以更安全和可维护的方式创建不可变的对象。 使用 使用…

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