打造最便捷的异步分页技术(提供下载)
一、建一个项目(以WebForm为例)
配置文件配置(注意您自己的路径)
二、在页面上生成分页布局代码
1)后端代码
public string Pager{ get; set; } private void Page_Load(object sender, EventArgs e) { using (var db=Db.CreateDefaultDb()) { var mqlJoin=ScoreSet.SelectAll() .InnerJoin(StudentSet.Select(StudentSet.Name)) .InnerJoin(ClassSet.Select(ClassSet.ID.AS("ClassID"),ClassSet.ClassName)) .ON(ScoreSet.StudentID.Equal(StudentSet.ID) .And(StudentSet.ClassID.Equal(ClassSet.ID) ) ); this.Pager=Moon.Orm.Util.Pager.GetWebPager(db,"SmallPage.aspx","content",mqlJoin,3,null); } }
2)前端代码
<%@ Page Language = "C#" AutoEventWireup = "false" Inherits = "Moon.Pager.Default" ValidateRequest = "false" EnableSessionState = "false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Moon.Pager</title> <script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script> </head> <body> <div id="content"></div> <%=this.Pager%> </body> </html>
三、加一个异步请求数据的小页面
1)后端代码
public DictionaryList List; private void Page_Load(object sender, System.EventArgs e) { using (var db=Db.CreateDefaultDb()) { var mqlJoin=ScoreSet.SelectAll() .InnerJoin(StudentSet.Select(StudentSet.Name)) .InnerJoin(ClassSet.Select(ClassSet.ID.AS("ClassID"),ClassSet.ClassName)) .ON(ScoreSet.StudentID.Equal(StudentSet.ID) .And(StudentSet.ClassID.Equal(ClassSet.ID) ) ); this.List=Moon.Orm.Util.Pager.GetOneWebPagesData(db,mqlJoin,null); } }
2)前端代码(SmallPage.aspx:对应前面的代码)
<%@ Page Language = "C#" AutoEventWireup = "false" Inherits = "Moon.Pager.SmallPage" ValidateRequest = "false" EnableSessionState = "false" -----------下载文件中没有,请你自己加上 %> <% foreach(var a in this.List){%> <p><%=a["ID"]%> <%=a["Name"]%></p> <%}%>
四、效果图
五、下载地址
http://pan.baidu.com/share/link?shareid=915781506&uk=353229276
六、在线体验(其实你们来在线体验页面,我是知道的,来了就留个言吧)
七、内核代码

/// <summary> /// 获取一个网页形式的分页布局 /// </summary> /// <param name="db">db引擎</param> /// <param name="smallPageURL">去这个页面地址取数据</param> /// <param name="contentDomID">用于存放数据的domID</param> /// <param name="mql">mql语句</param> /// <param name="onePageDataCount">每页的数据条数</param> /// <param name="oneOrderbyFieldName">如果没有则填写null(提示:似乎只有sqlserver中可能会用上)</param> /// <returns>分页布局</returns> public static string GetWebPager(Db db,string smallPageURL,string contentDomID,MQLBase mql,int onePageDataCount,string oneOrderbyFieldName){ string scriptsLink="<div id='pageNav'></div><script src='http://page-nav-js-jquery.googlecode.com/files/pagenav.min.js'></script>"; string css="<style type='text/css' media='screen'>a { color:#2B4A78; text-decoration:none; }a:hover { color:#2B4A78;text-decoration:underline; }a:focus, input:focus {outline-style:none; outline-width:medium; }.pageNum{border: 1px solid #999;padding:2px 8px;display: inline-block;}.cPageNum{font-weight: bold;padding:2px 5px;}#pageNav a:hover{text-decoration:none;background: #fff4d8; }</style>"; long sumPageCount; string sql=mql.ToParametersSQL(); string countSql="SELECT COUNT(0) FROM ("+sql+") T_MOON_Search0"; var parameters=mql.Parameters.ToArray(); var countData=db.ExecuteSqlToScalar(countSql,parameters); var sumDataCount=Convert.ToInt32(countData); sumPageCount=sumDataCount/onePageDataCount; string script="<script>var _perCount="+onePageDataCount+";var _pageSum="+sumPageCount+";var _listDivID='"+contentDomID+"';var _listActionPlace='"+smallPageURL+"';function GetPage(currentPageIndex,pageSum){$.ajax({url:_listActionPlace,async:true,cache:false,data:{PageIndex:currentPageIndex,onePageDataCount:"+onePageDataCount+"},success:function(html){$('#'+_listDivID).html('');$('#'+_listDivID).html(html);}});}$(function(){pageNav.pre='前一页';pageNav.next='下一页';pageNav.fn=function(currentPageIndex,pageSum){GetPage(currentPageIndex,pageSum);};pageNav.go(1,_pageSum);});</script>"; return scriptsLink+css+script; } /// <summary> /// smallPageURL中的数据 /// </summary> /// <param name="db">db引擎</param> /// <param name="mql">mql</param> /// <param name="oneOrderbyFieldName">如果没有则填写null(提示:似乎只有sqlserver中可能会用上)</param> /// <returns></returns> public static DictionaryList GetOneWebPagesData(Db db,MQLBase mql,string oneOrderbyFieldName){ long sumPageCount; HttpRequest Request=System.Web.HttpContext.Current.Request; long pageIndex=Convert.ToInt64(Request["PageIndex"]); int onePageDataCount=Convert.ToInt32(Request["onePageDataCount"]); return db.GetPagerToDictionList(mql,out sumPageCount,pageIndex,onePageDataCount,oneOrderbyFieldName); }
少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧
我的最近更新
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?