根据提供的信息,我们可以深入探讨如何在C# .NET中手写分页功能并利用存储过程来实现这一目标。下面将详细介绍整个实现过程的关键步骤、代码示例以及涉及到的相关概念。 ### 1. 分页功能的基本原理 在Web开发中,分页是一种常见的技术,用于处理大量数据时的展示问题。其基本思路是将数据库查询结果按照一定的数量划分成多个“页面”,每次只显示其中的一部分数据,同时提供导航按钮让用户可以翻阅不同的页面。这样既可以减少单次查询的数据量,又能提高用户体验。 ### 2. 实现步骤详解 #### 2.1 连接数据库与执行存储过程 需要建立与数据库的连接,并通过存储过程来获取数据。存储过程不仅可以提高查询效率,还能增强应用程序的安全性。这里使用了`SqlConnection`类来创建连接,并通过`SqlCommand`类来调用存储过程: ```csharp SqlConnection conn = new SqlConnection("Server=.;uid=sa;pwd=sa;database=hubeitongyu"); SqlCommand cmd = new SqlCommand("UP_Files_Count", conn); cmd.CommandType = CommandType.StoredProcedure; ``` #### 2.2 获取总记录数 为了计算出总共有多少页,我们需要先获取数据库中的总记录数。这通常通过一个返回整数的存储过程来实现,该存储过程统计表中的记录总数: ```csharp public void GetRecordCount() { cmd.Parameters.AddWithValue("@count", SqlDbType.Int).Direction = ParameterDirection.Output; conn.Open(); cmd.ExecuteNonQuery(); recordCount = (int)cmd.Parameters["@count"].Value; conn.Close(); } ``` 这里,我们定义了一个输出参数`@count`,用来接收存储过程返回的记录数。 #### 2.3 计算总页数 根据每页显示的记录数(`pageSize`)和总的记录数(`recordCount`),可以计算出总共需要的页数: ```csharp private int pageCount = 1; public void GetRecordPages() { pageCount = (int)Math.Ceiling((double)recordCount / pageSize); } ``` #### 2.4 显示当前页面的数据 接下来需要编写方法来获取并显示当前页面的数据。这同样可以通过一个存储过程来实现,该存储过程接受当前页码和每页显示的记录数作为输入参数,并返回当前页面的数据: ```csharp public void PagerFiles() { cmd.CommandText = "UP_Files_Pager"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@pageIndex", SqlDbType.Int).Value = currentPage; cmd.Parameters.AddWithValue("@pageSize", SqlDbType.Int).Value = pageSize; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); GridView gdvFiles = (GridView)FindControl("gdvFiles"); gdvFiles.DataSource = dt; gdvFiles.DataBind(); } ``` 这里使用了`GridView`控件来绑定数据并显示在页面上。 #### 2.5 添加分页导航 最后一步是添加分页导航。这通常包括“上一页”、“下一页”等按钮,以便用户可以浏览不同的页面。在ASP.NET中,可以通过JavaScript或服务器端代码来实现分页导航的功能。 ```csharp protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetRecordCount(); GetRecordPages(); BindPagerFiles(); } } public void BindPagerFiles() { string pagerHtml = "<ul>"; if (currentPage > 1) { pagerHtml += $"<li><a href='javascript:ChangePage({currentPage - 1})'>上一页</a></li>"; } for (int i = 1; i <= pageCount; i++) { pagerHtml += $"<li><a href='javascript:ChangePage({i})'>{i}</a></li>"; } if (currentPage < pageCount) { pagerHtml += $"<li><a href='javascript:ChangePage({currentPage + 1})'>下一页</a></li>"; } pagerHtml += "</ul>"; Literal divPager = (Literal)FindControl("divPager"); divPager.Text = pagerHtml; } ``` 这段代码创建了一个HTML列表,包含了各个页面的链接。当用户点击某个页面时,会触发JavaScript函数`ChangePage()`,该函数负责更新当前页码并重新加载页面数据。 ### 总结 通过上述步骤,我们可以实现在C# .NET中手写分页功能并利用存储过程来优化性能。这种方法不仅提高了数据处理的效率,还增强了应用程序的安全性和用户体验。希望这些信息能够帮助您更好地理解和应用分页技术。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
HTML代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table align="center">
<tr>
<td style="height: 21px; width: 484px;"> <asp:GridView ID="gdvFiles" runat="server" Height="179px" Width="511px" CellPadding="4" ForeColor="#333333" GridLines="None">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView></td>
</tr>
<tr>
<td style="width: 484px">
<div runat="server" id="divPager" >
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
隐藏代码文件:
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;
public partial class _Default : System.Web.UI.Page
{
SqlConnection conn = new SqlConnection("Server=.;uid=sa;pwd=sa;database=hubeitongyu");
SqlDataAdapter da;
SqlCommand cmd;
DataTable dt = new DataTable();
private int recordCount = 1;
private int pageCount = 1;
剩余8页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/2a1b1a1b5fb344a392cb2b2f123ad1bf_xf491698144.jpg!1)
- 粉丝: 20
- 资源: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 【matlab源码】五自由度机器人运动学分析
- html+css网页设计 喜茶官网1个页面
- 【matlab源码】五自由度非球面腕部工业机器人运动学逆解matlab仿真
- 【python代码】国赛E题数据读取筛选处理示例.py
- 【matlab源码】基于伪逆雅可比矩阵的冗余机器人逆运动学matlab分析.zip
- 【matlab源码】基于伪逆雅可比矩阵的3DOF机器人逆运动学分析
- 【matlab源码】机器人逆运动学分析
- 传送门工具:Euclidean Portal System 1.0.7
- 【matlab源码】二自由度机器人逆运动学matlab仿真
- 【matlab源码】二连杆机器人逆运动学的基本迭代算法matlab仿真
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)