一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载

Asp.Net 显示分页方法攻略

在 Asp.Net 开发中,经常需要实现分页功能,下面我们来讲解一个基于实体转换和存储过程的显示分页方法,包含完整的源码示例和说明。

实现思路

该方法的实现基于以下几个步骤:

  1. 创建存储过程,使用 SQL 语句实现分页查询。
  2. 创建实体类,用于存储分页查询结果。
  3. 创建数据访问层,通过实体转换调用存储过程,返回分页数据。
  4. 在页面中调用数据访问层获取数据源,并进行分页显示。

存储过程实现分页查询

假设我们要查询一个名为“person”的表,并按照“id”字段进行分页查询,查询结果包含“id”和“name”字段。对应的存储过程如下:

CREATE PROCEDURE [dbo].[proc_get_persons_paging]
    @PageIndex INT = 0, -- 当前页索引
    @PageSize INT = 10 -- 每页记录数
AS
BEGIN
    SET NOCOUNT ON;

    SELECT id, name FROM (
        SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS rownum, id, name
        FROM person
    ) AS t
    WHERE rownum >= (@PageIndex * @PageSize + 1) AND rownum <= ((@PageIndex + 1) * @PageSize)
    ORDER BY rownum ASC;
END

实体类定义

我们可以定义一个名为“Person”的实体类,用于存储分页查询结果:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

数据访问层实现

数据访问层负责调用存储过程,并将查询结果转换为实体类列表。我们可以通过 Dapper 实现实体转换:

public class PersonRepository
{
    private readonly IDbConnection _connection;

    public PersonRepository(IDbConnection connection)
    {
        _connection = connection;
    }

    public List<Person> GetPersonsPaging(int pageIndex, int pageSize)
    {
        var parameters = new
        {
            PageIndex = pageIndex,
            PageSize = pageSize
        };

        string sql = "dbo.proc_get_persons_paging";
        var persons = _connection.Query<Person>(sql, parameters, commandType: CommandType.StoredProcedure).ToList();
        return persons;
    }
}

分页显示

在页面中,我们可以使用 GridView 控件实现分页显示,并在数据绑定事件中调用数据访问层获取数据源。

<asp:GridView ID="gridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="编号" />
        <asp:BoundField DataField="Name" HeaderText="姓名" />
    </Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        int pageIndex = 0;
        int pageSize = 10;
        var persons = new PersonRepository(_connection).GetPersonsPaging(pageIndex, pageSize);
        gridView1.DataSource = persons;
        gridView1.DataBind();
    }
}

示例说明

示例1:查询前10条数据

假设我们要查询前10条 person 数据,查询结果如下:

int pageIndex = 0;
int pageSize = 10;
var persons = new PersonRepository(_connection).GetPersonsPaging(pageIndex, pageSize);

示例2:查询第11条至第20条数据

假设我们要查询第11条至第20条 person 数据,查询结果如下:

int pageIndex = 1;
int pageSize = 10;
var persons = new PersonRepository(_connection).GetPersonsPaging(pageIndex, pageSize);

总结

通过以上步骤,我们可以实现一个基于实体转换和存储过程的分页查询方法,可以满足大多数分页查询需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js本身的局限性 别让javascript做太多事

    JavaScript(以下简称JS)是Web前端开发必不可少的一门语言,它具有动态性、灵活性和可移植性等优点。但是,JavaScript本身存在着一些局限性,它不能完全替代其他语言的功能,也不能处理所有的任务。因此,在开发过程中需要注意不要过度依赖JS,否则会给项目带来一些潜在的风险和问题。 JS本身的局限性 在Web应用程序中,JS主要用于前端的交互效果和…

    JavaScript 2023年5月28日
    00
  • js字符串截取函数substr substring slice使用对比

    JS中操作字符串的时候,会用到截取字符串的函数,这篇攻略介绍substr、substring和slice三种常用的截取字符串函数,并进行对比。 substr substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法:string.substr(start, length) 参数说明:- start:必需,一个整数,规定字符串中开…

    JavaScript 2023年5月28日
    00
  • vue之keepAlive使用案例详解

    Vue之keepAlive使用案例详解 概述 Vue中的keep-alive是一个抽象组件,用于缓存动态组件或router-view之间的状态。当一个keep-alive包裹的组件在它们之间切换时,组件不会被销毁和重新创建,它只是被缓存起来,直到下次被需要时再进行渲染。 基本使用 在需要进行缓存的组件外部添加<keep-alive>标签,并在该标…

    JavaScript 2023年6月11日
    00
  • JavaScript 实现網頁打印處理

    要在网页上实现打印功能,可以使用 JavaScript 来控制页面的打印行为。下面是一些实现网页打印的攻略: 1. 使用 window.print 方法 window.print() 是 JavaScript 的内置方法,用于打开浏览器的打印框架并弹出打印对话框。为了使打印结果更好的呈现,建议在打印前设置适当的 CSS 样式,以适应打印机的纸张格式。 示例 …

    JavaScript 2023年5月19日
    00
  • Three.js实现雪糕地球的使用示例详解

    首先,为了使用Three.js实现雪糕地球,我们需要在网站中引入Three.js库,可以通过以下代码在HTML文件中引入: <script src="./js/three.min.js"></script> 为了呈现一个球形地球,我们使用Three.js中的球体(SphereGeometry)并将其放置在场景(Sc…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript正则表达式之RegExp对象

    详解JavaScript正则表达式之RegExp对象 什么是正则表达式? 正则表达式是一种字符串匹配的模式。在JavaScript中,我们可以使用RegExp对象来创建和使用正则表达式。 创建RegExp对象 在JavaScript中,我们有两种方式来创建一个RegExp对象: 使用字面量方式 let regExp = /pattern/flags; 其中,…

    JavaScript 2023年6月10日
    00
  • js点击返回跳转到指定页面实现过程

    实现点击返回跳转到指定页面的过程,一般分为以下几步: 1.获取当前页面的浏览历史记录,即通过window对象的history属性获取。 2.将指定页面的相对路径或绝对路径存储到一个变量中。 3.使用JavaScript编写点击事件处理函数,在该函数中,修改浏览器的历史记录,使其返回到指定页面。通常使用history.pushState()方法实现此功能。该方…

    JavaScript 2023年6月11日
    00
  • javascript中自定义对象的属性方法分享

    关于“JavaScript中自定义对象的属性方法分享”的攻略,我这里给您提供以下内容: JavaScript中自定义对象的属性方法分享 在JavaScript中,我们可以通过自定义对象的属性和方法来达到扩展自定义功能的目的。本文将介绍如何在JavaScript中定义自定义对象的属性和方法。 定义自定义对象 我们可以使用JavaScript构造函数来定义自定义…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部