Asp.net 中 Repeater 绑定数据时实现简单分页(无刷新)

           之前做repeater 绑定数据实现简单分页,在网上找了些资料,不是在翻页的时候将页面直接刷新就是借用了其他控件等。

在查询时需要获取页面上用户输入的查询条件情况下 翻页时刷新页面,一般简单分页都直接查询条件作为get参数来传递。而查询完

显示结果时 又重新将 参数绑定到 用户输入查询条件的控件上。这样感觉比较麻烦,而且页面的刷新也会页面上录入的其他数据丢失。

 这里的测试页面上有使用到模板页,测试时将 content2里面的内容copy出来就行了。

<%@ Page Title="" Language="C#" MasterPageFile="~/System/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs"  Inherits="Test" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:TextBox ID="txtRoleID" runat="server" Text="0001"></asp:TextBox>
    <asp:TextBox ID="txtMid" runat="server" Text="7"></asp:TextBox>
    <asp:Button ID="btnQuery" runat="server"
        Text="查询" onclick="btnQuery_Click" />

    <div>
        <asp:Repeater ID="rpt" runat="server">
            <HeaderTemplate>
                <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center" class="td_List">
                    <tr>
                        <th>
                            页面ID
                        </th>
                        <th>
                            页面名称
                        </th>
                        <th>
                            页面路径
                        </th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <%# Eval("P_ID").ToString()%>
                    </td>
                    <td>
                        <%# Eval("P_Name").ToString()%>
                    </td>
                    <td>
                        <%# Eval("UrlPath").ToString()%>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
        <div class="bottom">  <span>共有 <b id="lblpc" runat="server"></b> 页,当前为第 <b id="lblp" runat="server"></b> 页</span>
            <asp:LinkButton ID="lnkbtnFirst" runat="server" onclick="lnkbtnFirst_Click" >首页</asp:LinkButton>
           <asp:LinkButton ID="lnkbtnRev" runat="server" onclick="lnkbtnRev_Click" >上一页</asp:LinkButton>
           <asp:LinkButton ID="lnkbtnNext" runat="server" onclick="lnkbtnNext_Click" >下一页</asp:LinkButton>
           <asp:LinkButton ID="lnkbtnLast" runat="server" onclick="lnkbtnLast_Click" >尾页</asp:LinkButton>
        <asp:HiddenField ID="pageindex" runat="server" Value="0" />
        </div>
        </div>
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using System.Data;
public partial class Test : System.Web.UI.Page
{

    SystemInfo systemInfo = new SystemInfo();
    protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
        {
            pageChange();        
        }
    }

    //绑定数据源
    private PagedDataSource pds1()
    {
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = systemInfo.GetPagesByMIdAndRoleId(txtMid.Text.Trim(), txtRoleID.Text.Trim()).DefaultView;//获取数据源
        pds.AllowPaging = true;//允许分页
        pds.PageSize = 2;//单页显示项数
        pds.CurrentPageIndex = Convert.ToInt32(pageindex.Value);
        return pds;
    }

    //分页
    private void pageChange()
    {
        int n = Convert.ToInt32(pds1().PageCount);//n为分页数
        int i = Convert.ToInt32(pds1().CurrentPageIndex);//i为当前页
        lblpc.InnerHtml = n.ToString();
        lblp.InnerHtml = Convert.ToString(pds1().CurrentPageIndex + 1);
        if (i == 0 && n == 1)
        {
            lnkbtnFirst.Enabled = false;
            lnkbtnLast.Enabled = false;
            lnkbtnNext.Enabled = false;
            lnkbtnRev.Enabled = false;
        }
        else if (i <= 0)
        {
            lnkbtnFirst.Enabled = false;
            lnkbtnRev.Enabled = false;
            lnkbtnLast.Enabled = true;
            lnkbtnNext.Enabled = true;
        }
        else if (i >= n - 1)
        {
            lnkbtnFirst.Enabled = true;
            lnkbtnLast.Enabled = false;
            lnkbtnNext.Enabled = false;
            lnkbtnRev.Enabled = true;
        }
        else
        {
            lnkbtnFirst.Enabled = true;
            lnkbtnLast.Enabled = true;
            lnkbtnNext.Enabled = true;
            lnkbtnRev.Enabled = true;
        }
        rpt.DataSource = pds1();
        rpt.DataBind();
    }
    
    //上一页
    protected void lnkbtnRev_Click(object sender, EventArgs e)
    {
        pageindex.Value = (Convert.ToInt32(pageindex.Value) - 1).ToString();
        pageChange();
    }

    //下一页
    protected void lnkbtnNext_Click(object sender, EventArgs e)
    {
        pageindex.Value = (Convert.ToInt32(pageindex.Value) + 1).ToString();
        pageChange();
    }

    //第一页
    protected void lnkbtnFirst_Click(object sender, EventArgs e)
    {
        pageindex.Value = "0";
        pageChange();
    }

    //最后一页
    protected void lnkbtnLast_Click(object sender, EventArgs e)
    {
        pageindex.Value = (Convert.ToInt32(pds1().PageCount) - 1).ToString();
        pageChange();
    }

    //查询的时候将页面设置为第一页
    protected void btnQuery_Click(object sender, EventArgs e)
    {
        pageindex.Value = "0";
        pageChange();
    }
}

 

posted @ 2013-04-16 14:46  PM老猫  阅读(631)  评论(1编辑  收藏  举报