AspNetPager7.2的基本使用

本文PDF下载

首先介绍下开发环境:

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"。因为每次切换页码都将重新加载页面,视图状态意义不大。本文为突出思路没有考虑性能问题,实际使用中请注意性能优化。

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

你可能感兴趣的:(PAGER)