打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ASP.NET Ajax简单的无刷新分页
ASP.NE

最近练习了一些AJAX无刷新分页,写得比较简单,性能不知道怎么样,求大神指点,如有更好的分页提供,欢迎交流!

发话不多说了,直接上代码!

首先从网上下了一个JS分页,感觉挺好用的

  1 (function($) {  2     //设定页码方法,初始化  3     $.fn.setPager = function(options) {  4         //合并PagerDefaults和options  5         var opts = $.extend({}, pagerDefaults, options);  6           7         return this.each(function() {  8             //修改,能够动态设置PageSize  9             pagerDefaults.PageSize = options.PageSize; 10              11             //先清空后添加(调用自定义的setPagerHtml方法) 12             $(this).empty().append(setPagerHtml(parseInt(options.RecordCount), parseInt(options.PageIndex), options.buttonClick)); 13              14             $('.pager a').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; }); 15         }); 16     }; 17  18     //设定页数及html 19     //参数1:总条目数 20     //参数2:当前页 21     //参数3:页码按钮 22     function setPagerHtml(RecordCount, PageIndex, pagerClick) { 23         //调用pager样式表 24         var $content = $("<div class=\"pager\"></div>"); 25          26         //起始页 27         var startPageIndex = 1; 28  29         //若没有条目数,则按 pagerDefaults.PageSize = options.PageSize;选择的条目数来算 30         if (RecordCount <= 0) RecordCount = pagerDefaults.PageSize; 31          32         //页尺寸 33         var PageSize = pagerDefaults.PageSize; 34         //alert(pagerDefaults.PageSize); 35         36         //末页 37         var endPageIndex = parseInt(RecordCount % parseInt(PageSize)) > 0 ? parseInt(RecordCount / parseInt(PageSize)) + 1 : RecordCount / parseInt(PageSize); 38  39         //当前页若大于末页,则等于末页 40         if (PageIndex > endPageIndex) PageIndex = endPageIndex; 41          42         //当前页小于0,则等于起始页 43         if (PageIndex <= 0) PageIndex = startPageIndex; 44          45         //下一页 46         var nextPageIndex = PageIndex + 1; 47          48         //上一页 49         var prevPageIndex = PageIndex - 1; 50          51         //当前页等于首页 52         if (PageIndex == startPageIndex) { 53             //生成不能点击的首页和上一页 54             $content.append($("<span>首页</span>")); 55             $content.append($("<span>上一页</span>")); 56         } else { 57             //生成一个首页和上一页按钮 58             $content.append(renderButton(RecordCount, 1, pagerClick, "首页")); 59             $content.append(renderButton(RecordCount, prevPageIndex, pagerClick, "上一页")); 60         } 61          62         //这里判断是否显示页码 63         if (pagerDefaults.ShowPageNumber) { 64             // var html = ""; 65             //页码部分隐藏 只显示中间区域 66             if (endPageIndex <= 5 && PageIndex <= 5) { 67                 for (var i = 1; i <= endPageIndex; i++) { 68                     if (i == PageIndex) { 69                         //生成不可点击的页码,也可用于设置样式,加粗 70                         $content.append($("<span>" + i + "</span>")); 71                     } else { 72                         //生成可点击的页码 73                         $content.append(renderButton(RecordCount, i, pagerClick, i)); 74                     } 75  76                 } 77  78             }  79             //生成< 首页 上一页 ...3 4 5 6 7 下一页 末页 >格式 80             else if (endPageIndex > 5 && endPageIndex - PageIndex <= 2) { 81  82                 $content.append($("<a>...</a>")); 83                 for (var i = endPageIndex - 4; i <= endPageIndex; i++) { 84                     if (i == PageIndex) { 85                         $content.append($("<span>" + i + "</span>")); 86                     } else { 87                         $content.append(renderButton(RecordCount, i, pagerClick, i)); 88                     } 89  90                 } 91             } 92             //生成< 首页 上一页 ... 2 3 4 5 6 ... 下一页 末页 >格式 93             else if (endPageIndex > 5 && PageIndex > 3) { 94  95                 $content.append($("<a>...</a>")); 96                 for (var i = PageIndex - 2; i <= PageIndex + 2; i++) { 97                     if (i == PageIndex) { 98                         $content.append($("<span>" + i + "</span>")); 99                     } else {100                         $content.append(renderButton(RecordCount, i, pagerClick, i));101                     }102 103                 }104                 $content.append($("<a>...</a>"));105 106             }107             //生成< 首页 上一页 1 2 3 4 5 ... 下一页 末页 >格式108             else if (endPageIndex > 5 && PageIndex <= 3) {109 110                 for (var i = 1; i <= 5; i++) {111                     if (i == PageIndex) {112                         $content.append($("<span>" + i + "</span>"));113                     } else {114                         $content.append(renderButton(RecordCount, i, pagerClick, i));115                     }116 117                 }118                 $content.append($("<a>...</a>"));119             }120         }121         //当前页等于末页122         if (PageIndex == endPageIndex) {123             //生成不能点击的下一页和末页124             $content.append($("<span>下一页</span>"));125             $content.append($("<span>末页</span>"));126         } else {127             //生成一个下一页和末页按钮128             $content.append(renderButton(RecordCount, nextPageIndex, pagerClick, "下一页"));129             $content.append(renderButton(RecordCount, endPageIndex, pagerClick, "末页"));130         }131         //返回生成的分页132         return $content;133     }134 135     //生成页码136     //参数1:总条目数137     //参数2:指定页138     //参数3:页码按钮139     //参数4:指定页文本140     function renderButton(recordCount, goPageIndex, EventHander, text) {141         var $goto = $("<a title=\"第" + goPageIndex + "页\">" + text + "</a>\"");142         $goto.click(function() {143 144             EventHander(recordCount, goPageIndex, pagerDefaults.PageSize);145         });146         return $goto;147     }148 149     //pagerDefaults变量150     var pagerDefaults = {151         //152         DefaultPageCount: 1,153         154         //当前页155         DefaultPageIndex: 1,156         157         //总条目数158         PageSize: 20,159 160         //是否显示页码161         ShowPageNumber: true 162     };163 })(jQuery);

 

Theatrelist1.aspx前台页面代码,注意AJAX请求不能想自身后台(Theatrelist1.aspx.cs)发送请求,这样是获取不到的!所以只能发送给一般处理程序(ajaxPage.ashx)

 1     <script src="js/jquery-1.7.1.min.js" type="text/javascript"></script> 2  3     <script src="js/JqueryPage.js" type="text/javascript"></script> 4  5     <script type="text/javascript"> 6         $(document).ready(function() { 7         //初始化 8         GetData(1, 1); 9         });10 11         function InitPager(RecordCount, PageIndex, PageSize, Data) {12             $("#Pager").setPager({ RecordCount: RecordCount, PageIndex: PageIndex, PageSize: PageSize, buttonClick: PageClick });13         }14 15         //页码按钮16         //参数1:总条目数17         //参数2:当前页18         //参数3:页尺寸19         PageClick = function(RecordCount, PageIndex, PageSize) {20             GetData(PageSize, PageIndex);21         };22 23         //ajax请求响应24         //参数1:页尺寸25         //参数2:当前页26         function GetData(PageSize, PageIndex) {27             $.ajax({28                 url: 'ajaxPage.ashx',29                 Type: "post",30                 contentType: "application/json",31                 data: 'PageSize=' + PageSize + '&PageIndex=' + PageIndex,32                 success: function(data, status) {33                     $("#list").empty();34                     var i = 0;35                     for (i = 0; i < data.length-1; i++) {36                         var li = $("<li><a href=Theatrecontent.aspx?id=" + data[i].ID + ">" + data[i].Title + "</a><span>" + data[i].Time + "</span></li>");37                         $("#list").append(li);38                     }39                     $("#Pager").setPager({ RecordCount: data[i].Count, PageIndex: PageIndex, PageSize: PageSize, buttonClick: PageClick });40                 }41             });42         }43 44     </script>45 46 47 48 49 <!--截取主要的部分而已-->50         <div class="o_l_list">51             <p class="o_p_h">52                 剧院之窗..............................................................................</p>53             <ul id="list">54                 55             </ul>56             <p id="Pager" align="center">57                 58             </p>59         </div>

 

简单的CSS样式

 1 .pager span 2 { 3     position:relative; 4     margin-right:5px; 5     color:Gray; 6     text-align:center; 7     line-height:50px; 8 } 9 10 .pager a11 {12     position:relative;13     margin-right:5px;14     text-align:center;15     line-height:50px;16 }

 

ajaxPage.ashx页面代码

 1 <%@ WebHandler Language="C#" Class="ajaxPage" %> 2  3 using System; 4 using System.Web; 5 using System.Data; 6 using System.Data.SqlClient; 7 using System.Configuration; 8 using System.Web.Script.Serialization; 9 using System.Collections.Generic;10 11 public class ajaxPage : IHttpHandler {12     13     public void ProcessRequest (HttpContext context) {14         context.Response.ContentType = "application/json";15         BindData_Newslist(context);16     }17  18     public bool IsReusable {19         get {20             return false;21         }22     }23 24     #region 绑定25     /// <summary>26     /// 剧院之窗列表27     /// </summary>28     private void BindData_Newslist(HttpContext context)29     {30         //页尺寸31         int pageSize = Convert.ToInt32(context.Request["PageSize"]);32         //当前页33         int pageIndex = Convert.ToInt32(context.Request["PageIndex"]);34 35         //总条目数36         string Count = "";37         38         //链接数据库39         string conString = ConfigurationSettings.AppSettings["DBConnStr"];40         SqlConnection con = new SqlConnection(conString);41         42         //打开数据库43         con.Open();44         45         //page是存储过程46         SqlCommand cmd = new SqlCommand("page", con);47         cmd.CommandType = CommandType.StoredProcedure;48         cmd.Parameters.Add("@pageSize", pageSize);49         cmd.Parameters.Add("@pageIndex", pageIndex);50         //SqlParameter sqlcount = new SqlParameter("@count", SqlDbType.Int);51         //sqlcount.Direction = ParameterDirection.Output;52         //cmd.Parameters.Add(sqlcount);53         cmd.Parameters.Add("@count", 0);54         //声明为输出参数55         cmd.Parameters["@count"].Direction = ParameterDirection.Output;        56         57         58         SqlDataAdapter adpt = new SqlDataAdapter(cmd as SqlCommand);59         DataSet ds = new DataSet();60         adpt.Fill(ds);61         List<Table> list = new List<Table>();62         DataTable dt = ds.Tables[0];63         Count = cmd.Parameters["@count"].Value.ToString();64         //Count = sqlcount.Value.ToString();65         int i = 0;66         for (i = 0; i < dt.Rows.Count; i++)67         {68             list.Add(new Table()69             {70                 ID = dt.Rows[i]["id"].ToString(),71                 Title = dt.Rows[i]["title"].ToString(),72                 Time = dt.Rows[i]["Time"].ToString()73             });74         }75         list.Add(new Table() { Count = Count });76         77         //序列化输出78         JavaScriptSerializer jss = new JavaScriptSerializer();79         context.Response.Write(jss.Serialize(list));80         context.Response.End();81     }82 83     public class Table84     {85         public string ID { get; set; }86         public string Title { get; set; }87         public string Time { get; set; }88         public string Count { get; set; }89     }90 91     #endregion92 93 }

 

实现简单分页的存储过程

 1 USE [Jopera] 2 GO 3 /****** Object:  StoredProcedure [dbo].[page]    Script Date: 08/31/2013 10:09:21 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 ALTER proc [dbo].[page] 9 --页尺寸10 @pageSize int,11 12 --当前页13 @pageIndex int,14 15 --总条目数16 @count int output17 AS18 set @count=(select count(*) from Theatre where State=1)19 select id,title,[Time]20 from   (select id,title,[Time],21        ROW_NUMBER() over(order by Time DESC) as num22        from Theatre23        where State=1) T24 where (T.num>@pageSize*(@pageIndex-1)) and (T.num<=@pageSize*@pageIndex)

 T Ajax简单的无刷新分页

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ET Limit方式的分页查询 AJAX AJAX
asp.net 即时消息提示,网页 短消息即时提醒 asp.net 简单实现
Jquery Ajax 异步处理Json数据介绍
AJAX如何实现无刷新登录功能
成功ASP.NET core MVC分页
实现ScrollView的分页处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服