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(); } }