• 翻页控件AspNetPager7.2


    控件下载

    首先介绍下开发环境:

    Microsoft Visual Studio 2008

    SQL Server 2005

    要使用AspNetPager7.2当然要先下载它的dll文件了:官方下载

    然后将下载的AspNetPager.dll拖拽到工具箱中,成功加载后将在工具栏中显示如下图所示的组件项:

    clip_image001

    下面,我将用一个aspx页面来展示它是如何使用的。

    在页面中加入AspNetPager后,它的默认外观是这样的:

    <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
    
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server">
    </webdiyer:AspNetPager>
    

    视图:

    clip_image002

    下面我将介绍一些常用属性:

    • PageSize:每页要显示的元素数。
    • UrlPaging:为true,使用Url重写方式传递页码进行分页;为false(也是默认值),则按提交请求的方式进行分页。
    • FirstPageText:首页按钮上要显示的本文。
    • LastPageText:末页按钮上要显示的本文。
    • PrevPageText:上一页按钮上要显示的本文。
    • NextPageText:下一页按钮上要显示的本文。
    • OnPageChanged:页码更改时触发的事件。

    经过上述处理,AspNetPager变成了这个样子:

    视图:

    clip_image004

    下面,添加一个Repeater来显示数据:

    <asp:Repeater ID="repBooks" runat="server">
        <ItemTemplate>
            <h2>
                <a href="<%#Eval("Url") %>" target="_blank">
                    <%#Eval("Title") %></a></h2>
            <div class="articles">
                <%#Eval("ContentOverview")%></div>
        </ItemTemplate>
    </asp:Repeater>

    下面,为Repeater绑定数据源:

    public IBooksInNodesBean BooksInNodesBean { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Bind();
        }
    }
    
    protected void Bind()
    {
        int nodeid;
        if (Int32.TryParse(Request.QueryString["nodeid"], out nodeid))
        {
            var q =
                (
                from bn in BooksInNodesBean.GetAll()
                where bn.NodeID == nodeid
                orderby bn.SortNum descending
                select bn.Books
                );
            repBooks.DataSource = q;
            repBooks.DataBind();
        }
    }

    这里用了linq to sql技术,查询出了一个书籍列表。请注意红色代码部分,稍后将对它进行略微修改。现在,为AspNetPager添加OnPageChanged事件:

    protected void pager_PageChanged(object sender, EventArgs e)
    {
        int nodeid;
        if (Int32.TryParse(Request.QueryString["nodeid"], out nodeid))
        {
            var q =
                (
                from bn in BooksInNodesBean.GetAll()
                where bn.NodeID == nodeid
                orderby bn.SortNum descending
                select bn.Books
                );
            pager.RecordCount = q.Count();
            Bind();
        }
    }

    在上述代码中,首先查询出元素总数量,并将其赋值给AspNetPager对象的RecordCount属性。然后,执行绑定代码。此时,需要将绑定代码进行略微修改:

    protected void Bind()
    {
        int nodeid;
        if (Int32.TryParse(Request.QueryString["nodeid"], out nodeid))
        {
            var q =
                (
                from bn in BooksInNodesBean.GetAll()
                where bn.NodeID == nodeid
                orderby bn.SortNum descending
                select bn.Books
                );
            repBooks.DataSource = q.Skip(pager.PageSize * (pager.CurrentPageIndex - 1)).Take(pager.PageSize);
            repBooks.DataBind();
        }
    }

    此处用到了IEnumerible<T>对象的两个扩展方法:Skip、Take。

    • Skip方法将跳过指定数量的元素。
    • Take方法将返回指定数量的元素,相当于T -SQL的top x。

    注意:

    如果使用Url重写的方式分页,应设置@Page指令中EnableViewState="false"。因为每次切换页码都将重新加载页面,视图状态意义不大。本文为突出思路没有考虑性能问题,实际使用中请注意性能优化。

    本文到这里就结束了,希望对大家的工作有帮助。转载请注明出处。

  • 相关阅读:
    AngularJs学习笔记Understanding Angular Templates
    AngularJs学习笔记Creating Services
    AngularJs学习笔记E2E Testing
    AngularJs学习笔记Using $location
    AngularJs学习笔记Injecting Services Into Controllers
    AngularJs学习笔记unittesting
    AngularJs学习笔记Guide教程系列文章索引
    C语言 自幂数
    C# 虚拟键盘核心方法 Tech
    [转]SQLite SQL语句结构详解 Tech
  • 原文地址:https://www.cnblogs.com/weichuo/p/1893400.html
Copyright © 2020-2023  润新知