`
yangle926
  • 浏览: 58350 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

ASP.NET中分页的实现

    博客分类:
  • .NET
阅读更多
      实现环境:SQL Server 2005 Express + VWD 2008 Express Edition
      说明:关系数据库及表的详细情况请参看我的上一篇文章《实例讲解用.NET技术将Excel表格中的数据导入到特定的数据库中》。
第一步:存储过程GetRecordFromPage
    代码:
ALTER PROCEDURE GetRecordFromPage 
	@PageIndex int,
	@PageSize int,
	@RecordCount int out,
	@PageCount int out
AS
BEGIN
	select @RecordCount=Count(*) from UserInfo
	select @PageCount=ceiling(@RecordCount/@PageSize)
	select * from
	(select u.Id,u.UserName,u.UserAddress,u.UserTelephone,c.Model,u.InstallationDate,u.Amount,u.AccessoriesModel,u.InstallationName,u.Notes,Row_Number() over (order by u.Id) as RowNumber from UserInfo u inner join Category c on u.Caid=c.Id) as temp_table 
	 where temp_table.RowNumber>(@PageIndex*@PageSize) and temp_table.RowNumber<=((@PageIndex+1)*@PageSize) 	
END

    说明:该存储教程中用了两个输入参数@PageIndex和@PageSize,用以表示页码和每页显示的数据记录条数,注意PageIndex是实际显示的页码数值减1;两个输出参数@RecordCount和@PageCount,用以表示表中总的记录数和可以分的页码数量。
    原理:将两个有关联的表Category和UserInfo中的数据选择出来,并根据行数添加一字段RowNumber放到一临时表temp_table中,之后再从该临时表中查找指定页码的记录。
第二步:在DAL层添加方法:
    (1)RecordPage方法,功能:传入页码和每页要显示的记录数,返回所需要的记录
    代码:
        public DataTable RecordPage(int pageIndex, int pageSize)
        {
            DataTable dt = new DataTable();
            SqlDataReader sdr = null;
            string connStr=@"server=PC2009080519VDZ\SQLEXPRESS;database=yuajiasys;uid=sa;pwd=123456";
            SqlConnection conn=new SqlConnection(connStr);
            conn.Open();
            SqlCommand cmd=new SqlCommand("GetRecordFromPage",conn);
            cmd.CommandType=CommandType.StoredProcedure;
            cmd.Parameters.Add("@PageIndex",SqlDbType.Int);
            cmd.Parameters["@PageIndex"].Value = pageIndex;
            cmd.Parameters.Add("@PageSize",SqlDbType.Int);
            cmd.Parameters["@PageSize"].Value = pageSize;
            cmd.Parameters.Add("@RecordCount",SqlDbType.Int);
            cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@PageCount", SqlDbType.Int);
            cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output;
            sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            sdr.Close();
            conn.Close();
            return dt;
        }

    (2)RecordPageCount方法,功能:返回总的页数。
    代码:
        public int RecordPageCount(int pageIndex, int pageSize)
        {
            int recordCount = 0;
            int pageCount = 0;
            DataTable dt = new DataTable();
            SqlDataReader sdr = null;
            string connStr = @"server=PC2009080519VDZ\SQLEXPRESS;database=yuajiasys;uid=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlCommand cmd = new SqlCommand("GetRecordFromPage", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@PageIndex", SqlDbType.Int);
            cmd.Parameters["@PageIndex"].Value = pageIndex;
            cmd.Parameters.Add("@PageSize", SqlDbType.Int);
            cmd.Parameters["@PageSize"].Value = pageSize;
            cmd.Parameters.Add("@RecordCount", SqlDbType.Int);
            cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@PageCount", SqlDbType.Int);
            cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output;
            sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            sdr.Close();
            conn.Close();
            recordCount = (int)cmd.Parameters["@RecordCount"].Value;
            pageCount = (int)cmd.Parameters["@PageCount"].Value;
            return pageCount;
        }

第三步:在网页中调用:
    当然,首先要在BLL层写相应的RecordPage()和RecordPageCount()方法代码。
    (1)前台:
    ......
    <table>
        <tr><th>ID号</th><th>姓名</th><th>地址</th><th>电话</th><th>机型</th><th>安装日期</th><th>RowNumber</th></tr>
        <asp:Repeater ID="repuserinfo" runat="server">
            <ItemTemplate>
                <tr>
                    <td><%# Eval("Id") %></td>
                    <td><%# Eval("UserName") %></td>
                    <td><%# Eval("UserAddress") %></td>
                    <td><%# Eval("UserTelephone") %></td>
                    <td><%# Eval("Model") %></td>
                    <td><%# Eval("InstallationDate") %></td>
                    <td><%# Eval("RowNumber") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
    <p id="pginfo">
        第<asp:Label ID="lbpgIndex" runat="server" Text=""></asp:Label>页
        共<asp:Label ID="lbpgCount" runat="server" Text=""></asp:Label>页 
        转到第<asp:TextBox ID="txttopgIndex" CssClass="pginput" runat="server"></asp:TextBox>页
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txttopgIndex" runat="server" ErrorMessage="请输入页码" Text="*" ValidationGroup="pginfo"></asp:RequiredFieldValidator>
        <asp:Button ID="btntopgIndex" runat="server" Text="Go" onclick="btntopgIndex_Click" ValidationGroup="pginfo" />
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txttopgIndex" ValidationExpression="\d{1}[0-9]|\d{1}" runat="server" ErrorMessage="请输入数值" ValidationGroup="pginfo"></asp:RegularExpressionValidator>
        <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="pginfo" />
    </p>
   ......

    (2)后台:
    ......
    private int pgSize = 100;
    protected void Page_Load(object sender, EventArgs e)
    {
        int pgCount = new UserInfoManager().RecordPageCount(1, pgSize);
        DataTable dt = new DataTable();
        dt = new UserInfoManager().RecordPage(pgCount, pgSize);
        repuserinfo.DataSource = dt;
        repuserinfo.DataBind();
        lbpgIndex.Text = Convert.ToString(pgCount+1);
        lbpgCount.Text = Convert.ToString(pgCount+1);
    }
    protected void btntopgIndex_Click(object sender, EventArgs e)
    {
        int pgIndex = int.Parse(txttopgIndex.Text);
        int pgCount = new UserInfoManager().RecordPageCount(1, pgSize);
        DataTable dt = new DataTable();
        pgIndex -= 1;
        dt = new UserInfoManager().RecordPage(pgIndex, pgSize);
        repuserinfo.DataSource = dt;
        repuserinfo.DataBind();
        lbpgIndex.Text = Convert.ToString(pgIndex+1);
        lbpgCount.Text = Convert.ToString(pgCount+1);
        txttopgIndex.Text = "";
    }
    ......
分享到:
评论

相关推荐

    ASP.NET Repeater分页,查询分页

    ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页

    asp.net AJAX分页 分页代码

    ASP.NET AJAX分页技术是Web开发中的一个重要概念,它允许用户在不刷新整个页面的情况下实现数据的分块加载,提供流畅的用户体验。本教程将深入探讨ASP.NET AJAX分页的相关知识点,以及如何编写分页代码。 1. **什么...

    asp.net 自定义分页

    本文将深入探讨如何在ASP.NET中实现自定义分页,以及与SQL数据库的集成。 首先,我们要理解ASP.NET中的分页原理。分页的基本思想是通过在服务器端对数据进行切割,每次只取一部分数据返回给客户端,然后在客户端...

    asp.net mvc 分页的完整实现及源码下载

    本教程将深入探讨如何在ASP.NET MVC中实现完整的分页功能,并提供源码下载供参考。 首先,我们需要理解分页的基本概念。分页是将大数量的数据分成多个小部分(页)来显示,用户可以逐页浏览,而不是一次性显示所有...

    asp.net2.0 分页控件

    ASP.NET 2.0 分页控件是一种网页开发技术,用于在大量数据中实现高效的页面导航,以提高用户体验。在ASP.NET框架下,分页功能是通过数据绑定控件(如GridView, DataList或Repeater)内置的分页功能或者自定义控件来...

    ASP.Net手写分页

    首先,让我们深入理解ASP.NET中的分页实现。通常,我们可以使用两种方法:服务器端分页和数据库分页。服务器端分页是在服务器上加载所有数据,然后根据当前页码筛选显示的部分;而数据库分页则是在数据库层面进行...

    asp.net24种分页含源码

    源码包中的文件可能包含了以上提到的一些或全部分页方法的实现,这为学习和实践ASP.NET分页提供了丰富的素材。通过分析这些源代码,开发者可以深入理解各种分页技术的工作原理,以及如何在实际项目中应用它们。 在...

    ASP.NET MVC分页功能的实现的资源

    本文将深入探讨如何在ASP.NET MVC中实现分页功能,并重点关注"MvcPaging"这个标签扩展库。 首先,让我们理解什么是分页。分页是将大量数据分割成多个小部分(页)的过程,以便用户可以逐页浏览,而不会被大量信息...

    Ajax分页 Asp.net 分页

    本教程将深入探讨如何在Asp.net中实现Ajax分页。 首先,我们需要理解Ajax(异步JavaScript和XML)的核心概念。Ajax允许Web应用程序在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容,实现了页面的...

    asp.net 异步分页

    在ASP.NET中实现异步分页通常涉及以下几个关键步骤: 1. **数据库优化**:首先,为了高效地处理分页,数据库层面需要进行优化。这可能包括创建合适的索引、调整查询语句,使其只获取特定页的数据,以及利用存储过程...

    ASP.NET MVC分页

    标签`ASP.NET MVC分页`表明这个主题涵盖了如何在ASP.NET MVC项目中实现分页。在实际应用中,我们可能还需要考虑其他因素,如性能优化、搜索过滤后的分页、自定义样式和交互等。总的来说,掌握ASP.NET MVC分页技巧...

    ASP.NET分页一(Table)

    在ASP.NET中,可以使用多种方式实现分页,如ASP.NET Web Forms的GridView控件、ASP.NET MVC的PagedList库等。 在SQL Server中,`SET COUNT`是用于设置返回行数的语句,常与分页结合使用。当启用`SET COUNT ON`时,...

    C# ASP.net自定义分页

    ### C# ASP.NET 自定义分页控件解析 ...上述代码片段展示了如何在ASP.NET应用程序中实现一个简单的分页功能,并提供了详细的配置选项。开发者可以根据实际需求调整这些选项,从而更好地满足用户体验的需求。

    ASP.NET分页功能的实现

    本教程将详细介绍如何使用AspNetPager控件来实现ASP.NET分页功能。 AspNetPager控件是由WUCtrl公司开发的一款高效、易用的分页控件,它可以轻松地集成到ASP.NET应用中,提供丰富的自定义选项和强大的性能。下面我们...

    ASP.NET AJAX分页控件

    ASP.NET AJAX分页控件是一种在Web应用中实现动态、交互式用户体验的关键技术。它结合了ASP.NET的强大功能和AJAX(Asynchronous JavaScript and XML)的异步特性,以提高网页加载速度,优化用户界面,并减少不必要的...

    asp.net 通用分页类

    在ASP.NET开发中,分页是...`Pagination.cs`和`Default.aspx.cs`分别代表了分页类的实现和使用场景,通过这两个文件,我们可以构建出一个完整的分页解决方案,使得在ASP.NET应用程序中实现数据分页变得更加简单和高效。

    asp.net文章分页

    本文将深入探讨如何在ASP.NET中实现文章的分页功能,包括静态分页的原理和实践。 一、理解分页基础 1. 分页概念:分页是将大量数据分为多个部分(页)进行显示,用户可以逐页浏览,而不是一次性显示所有内容。在...

    asp.net中分页的实现

    本文将深入探讨如何在ASP.NET环境中实现分页功能。 首先,我们需要理解分页的基本概念。分页涉及到两个主要部分:前端展示和后端数据处理。前端负责显示页面和导航链接,而后端则负责从数据库中获取指定页的数据。 ...

    Asp.net通用分页控件

    总之,AspNetPager 7.2作为一款强大的ASP.NET分页控件,通过其丰富的功能和易用性,极大地简化了开发过程,提升了Web应用的性能和用户体验。对于处理大数据量的ASP.NET项目来说,它是不可或缺的工具之一。

Global site tag (gtag.js) - Google Analytics