`
yake2011
  • 浏览: 18986 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

ASP.NET分页之自定义分页(假分页)

 
阅读更多
原文链接

 

本文来自 CSDN 博客 作者:Cici Cheng

 

自定义分页中主要是有比较复杂的逻辑内容,其实思想还是比较简单。具体示例如下:

页面源码:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!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 id="Head1" runat="server">
    <title>ASP.NET分页之自定义分页</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:DataList ID="DataList1" runat="server" DataKeyField="o_id" RepeatColumns="4"
            RepeatDirection="Horizontal">
            <ItemTemplate>
                <table>
                    <tr>
                        <td align="right">
                            编号:</td>
                        <td>
                            <%# Eval("o_id") %>
                        </td>
                    </tr>
                    <tr>
                        <td align="right">
                            县市名称:</td>
                        <td>
                            <%# Eval("o_name") %>
                        </td>
                    </tr>
                    <tr>
                        <td align="right">
                            市编号:</td>
                        <td>
                            <%# Eval("c_id") %>
                        </td>
                    </tr>
                </table>
            </ItemTemplate>
        </asp:DataList>
        <br />
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    共<asp:Label ID="lblPageCount" runat="server" ForeColor="Red"></asp:Label>页, 当前第<asp:Label
                        ID="lblCurrPage" runat="server" ForeColor="Red"></asp:Label>页&nbsp;&nbsp; 共<asp:Label
                            ID="lblTotalCount" runat="server" ForeColor="Red"></asp:Label>条记录, 每页显示<asp:Label
                                ID="lblPageSize" runat="server" Text="16" ForeColor="Red"></asp:Label>条&nbsp;&nbsp;
                </td>
                <td>
                    <asp:LinkButton ID="btnFirst" runat="server" OnClick="btnFirst_Click">首页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="btnPrev" runat="server" OnClick="btnPrev_Click">上一页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click">下一页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="btnLast" runat="server" OnClick="btnLast_Click">尾页</asp:LinkButton>&nbsp;
                    跳到<asp:DropDownList ID="ddlPager" runat="server" Width="50" OnSelectedIndexChanged="ddlPager_SelectedIndexChanged"
                        AutoPostBack="true" />
                    页
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

 

 

 

后台代码:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Configuration;

using System.Data;



public partial class Default2 : System.Web.UI.Page
{

    //页面加载时默认显示第一页

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            BindPaging("1");

        }

    }



    //首页按钮被点击

    protected void btnFirst_Click(object sender, EventArgs e)
    {

        BindPaging("1");

    }



    //上一页页按钮被点击

    protected void btnPrev_Click(object sender, EventArgs e)
    {

        BindPaging("-1");

    }



    //下一页页按钮被点击

    protected void btnNext_Click(object sender, EventArgs e)
    {

        BindPaging("+1");

    }



    //尾页按钮被点击

    protected void btnLast_Click(object sender, EventArgs e)
    {

        BindPaging("0");

    }



    //下拉列表框选项发生改变

    protected void ddlPager_SelectedIndexChanged(object sender, EventArgs e)
    {

        BindPaging(ddlPager.Text);

    }



    private void BindPaging(string page)
    {

        SqlDataSource sqlds = new SqlDataSource();

        sqlds.ConnectionString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

        sqlds.SelectCommand = "SELECT * FROM [County]";

        sqlds.SelectCommandType = SqlDataSourceCommandType.Text;

        DataView dv = sqlds.Select(DataSourceSelectArguments.Empty) as DataView;



        int totalCount = dv.Count;//总条数

        int pageSize = 16;//每页显示条数

        int pageCount = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);//总页数

        int currPage; //当前页数

        //设置当前页

        switch (page)
        {

            //首页

            case "1":

                currPage = 1;

                break;

            //下一页

            case "+1":

                currPage = int.Parse(lblCurrPage.Text) + 1;

                break;

            //上一页

            case "-1":

                currPage = int.Parse(lblCurrPage.Text) - 1;

                break;

            //尾页

            case "0":

                currPage = pageCount;

                break;

            //下拉列表框直接传值时

            default:

                currPage = int.Parse(page);

                break;

        }



        //加载DropDownList项

        if (!IsPostBack)
        {

            for (int i = 1; i <= pageCount; i++)
            {

                ddlPager.Items.Add(i.ToString());

            }

        }



        //设置分页信息的显示

        lblCurrPage.Text = currPage.ToString();

        lblPageCount.Text = pageCount.ToString();

        lblPageSize.Text = pageSize.ToString();

        lblTotalCount.Text = totalCount.ToString();



        //设置翻页按钮的可用性

        btnFirst.Enabled = btnPrev.Enabled = btnNext.Enabled = btnLast.Enabled = true;

        if (currPage == 1)
        {

            btnFirst.Enabled = btnPrev.Enabled = false;

        }

        if (currPage == pageCount)
        {

            btnNext.Enabled = btnLast.Enabled = false;

        }

        ddlPager.Text = currPage.ToString();



        //从查询出的所有记录中筛选出即将呈现的当前页的数据集合

        int loopCount = (currPage == pageCount) ? totalCount - (currPage - 1) * pageSize : pageSize; //显示的记录条数

        DataRowView[] drwsToBind = new DataRowView[loopCount];

        for (int i = 0; i < loopCount; i++)
        {

            drwsToBind[i] = dv[(currPage - 1) * pageSize + i];

        }

        DataList1.DataSource = drwsToBind;

        DataList1.DataBind();

    }

}

 

预览效果

 



 

首页时"首页"和"上一页"按钮禁用,尾页时"下一页"和"尾页"按钮禁用。这里也可以将其隐藏,只需将btnFirst.Enabled=false改成btnFirst.Visible=false即可。另外翻页时下拉列表框和显示信息栏的当前页同时更新

 



 

  • 大小: 55.9 KB
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    Asp.Net分页及自定义控件教程

    在Asp.Net开发中,分页和自定义控件是两个关键的概念,它们极大地提高了Web应用的性能和用户体验。下面将详细阐述这两个知识点。 一、Asp.Net分页 Asp.Net分页是一种用于处理大量数据的技术,它可以将大数据集分割...

    .net分页控件,.net自定义分页控件

    .NET框架提供了一些内置的分页控件,如ASP.NET中的GridView和DataGrid,但这些控件可能无法满足开发者对于外观、功能或性能的特殊需求,因此,自定义分页控件的需求应运而生。 创建自定义分页控件涉及以下几个关键...

    asp.net 分页控件(包括demo)

    在ASP.NET中,分页控件是处理大数据集时不可或缺的组件,它能有效地提高用户体验,避免一次性加载大量数据导致的页面响应慢或内存消耗过大的问题。 标题中的“asp.net分页控件”指的是用于在网页上实现数据分页显示...

    asp.net 自定义分页

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

    asp.net24种分页含源码

    在这个“asp.net24种分页含源码”的资源包中,我们重点关注的是ASP.NET中的分页技术,这是一种在处理大量数据时不可或缺的功能,可以提高网页加载速度,提升用户体验。 分页是Web应用中常见的数据展示策略,特别是...

    asp.net分页控件

    asp.net分页控件asp.net分页控件

    asp.net 分页类

    一个自定义的ASP.NET分页类通常包括以下核心组件和功能: 1. **数据获取**:分页类首先需要能从数据源(如SQL Server数据库、XML文件、Web服务等)中获取数据。这通常通过ADO.NET或者Entity Framework等数据访问...

    asp.net分页第三方控件

    asp.net分页第三方控件 非常好用 grideView,datalist等绑定

    一个不错的Asp.net分页控件

    这个“一个不错的Asp.net分页控件”很可能是开发者为了优化用户体验和提高网页性能而设计的自定义控件。 在Asp.Net框架中,分页功能通常是通过GridView、ListView或者Repeater等数据绑定控件来实现的。这些控件内置...

    ASP.NET GridView自定义分页支持拖拽控件合集

    基于ASP.NET的自定义分页显示及可拖动改变列宽代码 支持通过Url进行分页,支持Url分页方式下的Url重写(UrlRewrite)功能,支持使用用户自定义图片做为导航元素,功能强大灵活、使用方便、可定制性强,增强的 Visual...

    ASP.NET分页控件源码

    在这个特定的场景中,我们关注的是"ASP.NET分页控件源码",它是为了帮助开发者在网页上实现高效、用户友好的数据浏览功能。 分页控件是ASP.NET Web Forms中常见的一种组件,它主要用于处理大量数据时,以防止一次性...

    asp.net分页控件样式

    Webdiyer 提供的 AspNetPager 是一个功能丰富的 ASP.NET 分页控件,提供了多种自定义样式和功能选项,以适应不同网页设计的需求。 在上述描述中,我们可以看到三个不同样式的 AspNetPager 控件实例: 1. **样式一*...

    C# ASP.net自定义分页

    ### C# ASP.NET 自定义分页控件解析 #### 概述 在Web开发中,分页是一项常用的功能,尤其当需要展示大量数据时。本文将深入探讨如何使用C#和ASP.NET创建自定义的分页控件。通过分析提供的`Pager.cs`源代码,我们将...

    .net分页 asp.net分页

    本文将深入探讨.NET分页和ASP.NET分页的相关知识点,以及如何在实际项目中应用。 首先,我们来理解什么是分页。分页是将大量数据分成多个小部分,每次只显示一部分,用户可以通过导航按钮(如“上一页”、“下一页...

    Ajax分页 Asp.net 分页

    在Asp.net中,我们可以使用多种方式实现Ajax分页,如jQuery的Ajax功能、ASP.NET AJAX Control Toolkit中的Paging控件,或者自定义Ajax分页组件。这里我们将主要讨论使用jQuery Ajax和Asp.net MVC或Web Forms的方式。...

    asp.net分页控件的使用方法

    asp.net分页控件的使用方法

    ASP.NET分页控件(最新版)

    此外,ASP.NET分页控件的自定义样式特性允许开发者通过CSS样式来调整分页按钮的外观,实现与网页整体设计的统一。你可以通过修改控件的CSS类或者使用皮肤文件(SkinFile)来定义不同的样式。 总的来说,ASP.NET分页...

    asp.net分页控件源码 含数据库完整演示代码

    ASP.NET分页控件是Web开发中常用的一种组件,它能有效地管理大量数据的显示,提高用户体验,防止一次性加载过多数据导致页面响应慢的问题。在本资源中,"asp.net分页控件源码 含数据库完整演示代码"提供了一个完整的...

Global site tag (gtag.js) - Google Analytics