Asp.Net 显示分页方法攻略
在 Asp.Net 开发中,经常需要实现分页功能,下面我们来讲解一个基于实体转换和存储过程的显示分页方法,包含完整的源码示例和说明。
实现思路
该方法的实现基于以下几个步骤:
- 创建存储过程,使用 SQL 语句实现分页查询。
- 创建实体类,用于存储分页查询结果。
- 创建数据访问层,通过实体转换调用存储过程,返回分页数据。
- 在页面中调用数据访问层获取数据源,并进行分页显示。
存储过程实现分页查询
假设我们要查询一个名为“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技术站