Jquery+JSon实现的Asp.net无刷新分页控件
发布时间:2020-12-16 19:08:47 所属栏目:百科 来源:网络整理
导读:控件类代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Reflection; using System.I
控件类代码:
using
System;
using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Reflection; using System.IO; [assembly:WebResource( " PageBarJS.js " , " application/x-javascript " )] namespace Hawkon.Control{ [DefaultProperty( " Text " )] [ToolboxData( " <{0}:PageBarrunat=server></{0}:PageBar> " )] public class PageBar:WebControl{ [Bindable( true )] [Category( " Data " )] [DefaultValue( " 1 " )] [Localizable( true )] public int PageIndex{ get { return pageIndex; } set { pageIndex = value; } } private int pageIndex; [Bindable( true )] [Category( " Data " )] [DefaultValue( " 1 " )] [Localizable( true )] public int PageCount{ get { return pageCount; } set { pageCount = value; } } private int pageCount; [Bindable( true )] [Category( " Data " )] [DefaultValue( " 5 " )] [Localizable( true )] public int DisplayCount{ get { return displayCount; } set { displayCount = value; } } private int displayCount; protected override void RenderContents(HtmlTextWriteroutput){ string html = "" ; html += CreateA( 1 , " << " ); int b = 0 ,e = 0 ; if (pageIndex <= displayCount){ b = 1 ; e = displayCount * 2 + 1 ; } else if (pageIndex > pageCount - displayCount){ b = pageCount - displayCount * 2 ; e = pageCount; } else { b = pageIndex - displayCount; e = pageIndex + displayCount; } if (b <= 1 ){ html += CreateA( 1 , " " ); } else html += CreateA(b - 1 , " " ); for ( int i = b;i <= e;i ++ ){ html += CreateA(i,i.ToString()); } html += CreateA(e + 1 , " " ); html += CreateA(pageCount, " >> " ); // html+=string.Format("<scriptsrc='{0}'type='text/javascript'></script>", // this.Page.ClientScript.GetWebResourceUrl(typeof(PageBar),"JScript1.js")); output.Write(html); } private string CreateA( int pageIndex, string text){ if (pageIndex == this .pageIndex){ return string .Format( " <aclass= " pageA " title='页'id= " { 0 } " >{1}</a> " ,pageIndex,text); } return string .Format( " <aclass= " pageA " title='页'href= " # " id= " { 0 } " >{1}</a> " ,text); } protected override void OnPreRender(EventArgse){ base .OnPreRender(e); string resourceName = " PageBarJS.js " ; string url = this .Page.ClientScript.GetWebResourceUrl( this .GetType(), " PageBarJS.js " ); string script = " rn<scriptsrc= "" +HttpUtility.HtmlAttributeEncode(url)+ " " type= " text / javascript " ></script> " ; this .Page.ClientScript.RegisterClientScriptBlock( this .GetType(),resourceName,script, false ); script = @" <scripttype=""text/javascript"">$(document).ready(function(){InitPageBar(5,""BookListByPage"",""Books"",50,""pageA"");});</script> " ; this .Page.ClientScript.RegisterClientScriptBlock( this .GetType(), " ready " ,script); } protected override void Render(HtmlTextWriterwriter){ base .Render(writer); } } } JS资源文件代码: var displayCount; var getDataUrl; var bookTableId; var currentIndex; var pageCount; var linkClass; var fields; function InitPageBar(dc,gdu,btId,pc,lc){ displayCount = dc; getDataUrl = gdu; bookTableId = btId; currentIndex = 1 ; pageCount = pc; linkClass = " . " + lc; $(linkClass).click(GetPage); } function GetPageById(id){ $( " #CI " ).val(id); var surl = getDataUrl + " ?pageIndex= " + id; $.ajax({ url:surl, type: " GET " , dataType: " json " , timeout: 1000 , success:showResult } ); } function GetPage(){ GetPageById($( this ).get( 0 ).id); } function showResult(result){ for (i = 1 ;i <= result.Data.length;i ++ ){ var id = " # " + bookTableId + " tr:nth-child( " + i + " ) " ; obj = result.Data[i - 1 ]; for ( var key in obj){ ctl = $(id).find( " . " + key); if (ctl.length > 0 ){ ctl.get( 0 ).innerHTML = obj[key]; } } } $(linkClass).each( function (index){ var i,b,e; if (result.CurrentPageIndex <= displayCount){ b = 1 ; e = (displayCount + 1 ) * 2 ; i = index - 2 + 1 ; } else if (result.CurrentPageIndex > pageCount - displayCount){ b = pageCount - displayCount * 2 ; e = pageCount; i = pageCount - displayCount * 2 + index - 2 ; } else { i = result.CurrentPageIndex - displayCount + index - 2 ; b = result.CurrentPageIndex - displayCount - 1 ; e = result.CurrentPageIndex + displayCount + 1 ; } if ($( this ).get( 0 ).id == $( this ).text()){ $( this ).text(i); } else if (index == 1 ){ if (b <= 1 ){ $( this ).get( 0 ).id = 1 ; } else { $( this ).get( 0 ).id = b - 1 ; } } else if (index == displayCount * 2 + 3 ){ $( this ).get( 0 ).id = e; } $( this ).attr( " href " , " # " ); if ((i >= b) && (i <= e)){ $( this ).get( 0 ).id = i; } if ($( this ).text == result.CurrentPageIndex){ $( this ).removeAttr( " href " ); } }); currentIndex = result.CurrentPageIndex; }
<
form
runat
="server"
id
="form1"
>
< div > < asp:Repeater ID ="rptBooks" runat ="server" > < HeaderTemplate > < table id ="Books" width ="90%" cellspacing ="0" style ="font-size:12px;" > < tr > < th > 书名 </ th > < th > 作者 </ th > < th > 类别 </ th > < th width ="30px" > </ th > < th width ="30px" > </ th > </ tr > < tbody id ="Data" > < tr > </ HeaderTemplate > < ItemTemplate > < td class ="Title" > <% # Eval ( " Title " ) %> </ td > < td class ="Author" > <% # Eval ( " Author " ) %> </ td > < td class ="CategoryName" > <% # Eval ( " Categories.Name " ) %> </ td > < td > < a href ="#" id ='<%# Eval("Id")% > 'class="delBook">删除 </ a > </ td > < td > < a href ='BookDetail/<%# Eval("Id")% > 'class="details">详细 </ a > </ td > </ ItemTemplate > < SeparatorTemplate > </ tr >< tr > </ SeparatorTemplate > < FooterTemplate > </ tr ></ tbody > < tr > < td colspan ="3" > < cc1:PageBar ID ="PageBar1" runat ="server" PageCount ="100" DisplayCount ="5" PageIndex ="1" /> < input type ="text" id ="CI" /> </ td > </ td > </ tr > </ table > </ FooterTemplate > </ asp:Repeater > </ div > </ form > Ajax请求地址返回的JSON数据:
{"Data":[{"Title":"C#.NET程序设计——国外计算机科学经典教材","CategoryName":".NET","Author":"布拉德利(Bradley,J.C.),米尔斯波(Millspaugh,A.C.)著,天宏工作室译","Id":5392},{"Title":"C#2.0〔宝典)(附盘)","CategoryName":"CC++VCVC++","Author":"张立编著","Id":5027},{"Title":"C#2.0完全自学手册(附CD)","Author":"张立 等编著","Id":5081},{"Title":"C#2005数据库编程经典教程","Author":"(美)沃顿(Karliwatton)著,陈秋萍译","Id":4983},{"Title":"C#程序设计教程——计算机基础课程系列教材","Author":"郑阿奇,梁敬东主编","Id":5127},{"Title":"C#程序员参考手册","Author":"GrantPalmer著,康博译","Id":5132},{"Title":"C#和.NET核心技术——开发人员专业技术丛书","Author":"(美)佩里(Perry,S.C.)著,肖斌等译","Id":5104},{"Title":"C#基础与实例教程(附CD-ROM光盘一张)","Author":"郝春强编著","Id":5071},{"Title":"C#软件项目开发全程剖析","Author":"(德)侯姆,(德)克鲁格,(德)斯普达著,薛兴涛,袁勤勇译","Id":5034},{"Title":"C#设计模式——开发大师系列","Author":"(美)麦斯科著,颜炯译","Id":4954}],"CurrentPageIndex":15,"PageCount":1074}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |