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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)