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

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

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

 (function($) {
//设定页码方法,初始化
$.fn.setPager = function(options) {
//合并PagerDefaults和options
var opts = $.extend({}, pagerDefaults, options); return this.each(function() {
//修改,能够动态设置PageSize
pagerDefaults.PageSize = options.PageSize; //先清空后添加(调用自定义的setPagerHtml方法)
$(this).empty().append(setPagerHtml(parseInt(options.RecordCount), parseInt(options.PageIndex), options.buttonClick)); $('.pager a').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; });
});
}; //设定页数及html
//参数1:总条目数
//参数2:当前页
//参数3:页码按钮
function setPagerHtml(RecordCount, PageIndex, pagerClick) {
//调用pager样式表
var $content = $("<div class=\"pager\"></div>"); //起始页
var startPageIndex = 1; //若没有条目数,则按 pagerDefaults.PageSize = options.PageSize;选择的条目数来算
if (RecordCount <= 0) RecordCount = pagerDefaults.PageSize; //页尺寸
var PageSize = pagerDefaults.PageSize;
//alert(pagerDefaults.PageSize); //末页
var endPageIndex = parseInt(RecordCount % parseInt(PageSize)) > 0 ? parseInt(RecordCount / parseInt(PageSize)) + 1 : RecordCount / parseInt(PageSize); //当前页若大于末页,则等于末页
if (PageIndex > endPageIndex) PageIndex = endPageIndex; //当前页小于0,则等于起始页
if (PageIndex <= 0) PageIndex = startPageIndex; //下一页
var nextPageIndex = PageIndex + 1; //上一页
var prevPageIndex = PageIndex - 1; //当前页等于首页
if (PageIndex == startPageIndex) {
//生成不能点击的首页和上一页
$content.append($("<span>首页</span>"));
$content.append($("<span>上一页</span>"));
} else {
//生成一个首页和上一页按钮
$content.append(renderButton(RecordCount, 1, pagerClick, "首页"));
$content.append(renderButton(RecordCount, prevPageIndex, pagerClick, "上一页"));
} //这里判断是否显示页码
if (pagerDefaults.ShowPageNumber) {
// var html = "";
//页码部分隐藏 只显示中间区域
if (endPageIndex <= 5 && PageIndex <= 5) {
for (var i = 1; i <= endPageIndex; i++) {
if (i == PageIndex) {
//生成不可点击的页码,也可用于设置样式,加粗
$content.append($("<span>" + i + "</span>"));
} else {
//生成可点击的页码
$content.append(renderButton(RecordCount, i, pagerClick, i));
} } }
//生成< 首页 上一页 ...3 4 5 6 7 下一页 末页 >格式
else if (endPageIndex > 5 && endPageIndex - PageIndex <= 2) { $content.append($("<a>...</a>"));
for (var i = endPageIndex - 4; i <= endPageIndex; i++) {
if (i == PageIndex) {
$content.append($("<span>" + i + "</span>"));
} else {
$content.append(renderButton(RecordCount, i, pagerClick, i));
} }
}
//生成< 首页 上一页 ... 2 3 4 5 6 ... 下一页 末页 >格式
else if (endPageIndex > 5 && PageIndex > 3) { $content.append($("<a>...</a>"));
for (var i = PageIndex - 2; i <= PageIndex + 2; i++) {
if (i == PageIndex) {
$content.append($("<span>" + i + "</span>"));
} else {
$content.append(renderButton(RecordCount, i, pagerClick, i));
} }
$content.append($("<a>...</a>")); }
//生成< 首页 上一页 1 2 3 4 5 ... 下一页 末页 >格式
else if (endPageIndex > 5 && PageIndex <= 3) { for (var i = 1; i <= 5; i++) {
if (i == PageIndex) {
$content.append($("<span>" + i + "</span>"));
} else {
$content.append(renderButton(RecordCount, i, pagerClick, i));
} }
$content.append($("<a>...</a>"));
}
}
//当前页等于末页
if (PageIndex == endPageIndex) {
//生成不能点击的下一页和末页
$content.append($("<span>下一页</span>"));
$content.append($("<span>末页</span>"));
} else {
//生成一个下一页和末页按钮
$content.append(renderButton(RecordCount, nextPageIndex, pagerClick, "下一页"));
$content.append(renderButton(RecordCount, endPageIndex, pagerClick, "末页"));
}
//返回生成的分页
return $content;
} //生成页码
//参数1:总条目数
//参数2:指定页
//参数3:页码按钮
//参数4:指定页文本
function renderButton(recordCount, goPageIndex, EventHander, text) {
var $goto = $("<a title=\"第" + goPageIndex + "页\">" + text + "</a>\"");
$goto.click(function() { EventHander(recordCount, goPageIndex, pagerDefaults.PageSize);
});
return $goto;
} //pagerDefaults变量
var pagerDefaults = {
//
DefaultPageCount: 1, //当前页
DefaultPageIndex: 1, //总条目数
PageSize: 20, //是否显示页码
ShowPageNumber: true
};
})(jQuery);

JS

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

     <script src="js/jquery-1.7.1.min.js" type="text/javascript"></script>

     <script src="js/JqueryPage.js" type="text/javascript"></script>

     <script type="text/javascript">
$(document).ready(function() {
//初始化
GetData(1, 1);
}); function InitPager(RecordCount, PageIndex, PageSize, Data) {
$("#Pager").setPager({ RecordCount: RecordCount, PageIndex: PageIndex, PageSize: PageSize, buttonClick: PageClick });
} //页码按钮
//参数1:总条目数
//参数2:当前页
//参数3:页尺寸
PageClick = function(RecordCount, PageIndex, PageSize) {
GetData(PageSize, PageIndex);
}; //ajax请求响应
//参数1:页尺寸
//参数2:当前页
function GetData(PageSize, PageIndex) {
$.ajax({
url: 'ajaxPage.ashx',
Type: "post",
contentType: "application/json",
data: 'PageSize=' + PageSize + '&PageIndex=' + PageIndex,
success: function(data, status) {
$("#list").empty();
var i = 0;
for (i = 0; i < data.length-1; i++) {
var li = $("<li><a href=Theatrecontent.aspx?id=" + data[i].ID + ">" + data[i].Title + "</a><span>" + data[i].Time + "</span></li>");
$("#list").append(li);
}
$("#Pager").setPager({ RecordCount: data[i].Count, PageIndex: PageIndex, PageSize: PageSize, buttonClick: PageClick });
}
});
} </script> <!--截取主要的部分而已-->
<div class="o_l_list">
<p class="o_p_h">
剧院之窗..............................................................................</p>
<ul id="list"> </ul>
<p id="Pager" align="center"> </p>
</div>

HTML

简单的CSS样式

 .pager span
{
position:relative;
margin-right:5px;
color:Gray;
text-align:center;
line-height:50px;
} .pager a
{
position:relative;
margin-right:5px;
text-align:center;
line-height:50px;
}

CSS

ajaxPage.ashx页面代码

 <%@ WebHandler Language="C#" Class="ajaxPage" %>

 using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Script.Serialization;
using System.Collections.Generic; public class ajaxPage : IHttpHandler { public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/json";
BindData_Newslist(context);
} public bool IsReusable {
get {
return false;
}
} #region 绑定
/// <summary>
/// 剧院之窗列表
/// </summary>
private void BindData_Newslist(HttpContext context)
{
//页尺寸
int pageSize = Convert.ToInt32(context.Request["PageSize"]);
//当前页
int pageIndex = Convert.ToInt32(context.Request["PageIndex"]); //总条目数
string Count = ""; //链接数据库
string conString = ConfigurationSettings.AppSettings["DBConnStr"];
SqlConnection con = new SqlConnection(conString); //打开数据库
con.Open(); //page是存储过程
SqlCommand cmd = new SqlCommand("page", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@pageSize", pageSize);
cmd.Parameters.Add("@pageIndex", pageIndex);
//SqlParameter sqlcount = new SqlParameter("@count", SqlDbType.Int);
//sqlcount.Direction = ParameterDirection.Output;
//cmd.Parameters.Add(sqlcount);
cmd.Parameters.Add("@count", );
//声明为输出参数
cmd.Parameters["@count"].Direction = ParameterDirection.Output; SqlDataAdapter adpt = new SqlDataAdapter(cmd as SqlCommand);
DataSet ds = new DataSet();
adpt.Fill(ds);
List<Table> list = new List<Table>();
DataTable dt = ds.Tables[];
Count = cmd.Parameters["@count"].Value.ToString();
//Count = sqlcount.Value.ToString();
int i = ;
for (i = ; i < dt.Rows.Count; i++)
{
list.Add(new Table()
{
ID = dt.Rows[i]["id"].ToString(),
Title = dt.Rows[i]["title"].ToString(),
Time = dt.Rows[i]["Time"].ToString()
});
}
list.Add(new Table() { Count = Count }); //序列化输出
JavaScriptSerializer jss = new JavaScriptSerializer();
context.Response.Write(jss.Serialize(list));
context.Response.End();
} public class Table
{
public string ID { get; set; }
public string Title { get; set; }
public string Time { get; set; }
public string Count { get; set; }
} #endregion }

C#

实现简单分页的存储过程

 USE [Jopera]
GO
/****** Object: StoredProcedure [dbo].[page] Script Date: 08/31/2013 10:09:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[page]
--页尺寸
@pageSize int, --当前页
@pageIndex int, --总条目数
@count int output
AS
set @count=(select count(*) from Theatre where State=1)
select id,title,[Time]
from (select id,title,[Time],
ROW_NUMBER() over(order by Time DESC) as num
from Theatre
where State=1) T
where (T.num>@pageSize*(@pageIndex-1)) and (T.num<=@pageSize*@pageIndex)

SQL

最终效果页面

ASP.NET Ajax简单的无刷新分页的更多相关文章

  1. jquery ajax php+mysql 无刷新分页 详细实例

    最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...

  2. TP2.0或3.1 或者 3.2 下使用ajax+php做无刷新分页(转+自创)

    1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...

  3. Bootstrap Paginator分页插件+ajax 实现动态无刷新分页

    之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: Downlo ...

  4. jquery+ajax(用ajax.dll)实现无刷新分页

    利用ajax.dll那种方式的无刷新,在这就不说了,新朋友可以看下我的另一片文件http://www.cnblogs.com/dachuang/p/3654632.html 首先,这里用的是jquer ...

  5. asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...

  6. ajax实现的无刷新分页代码实例

    一.html代码部分: <table class="table style-5">   <thead id="t_head">     ...

  7. 关于Ajax无刷新分页技术的一些研究 c#

    关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...

  8. 本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如 ...

  9. ASP.NET中无刷新分页

    上次介绍了我们代码写的刷新分页,这次就来说说无刷新分页. 这次我们是在上次的基础上改动了一些,我们都知道想要无刷新,就需要Ajax,在我们的ASP.NET中AJax是和一般处理程序配合着用的. 无刷新 ...

随机推荐

  1. MVVM知识库总结

    1.关于MVVM概念的理解和实际运用中的解析: http://www.cnblogs.com/hielvis/archive/2011/03/22/1991959.html http://msdn.m ...

  2. Linux系统编程——进程间通信:命名管道(FIFO)

    命名管道的概述 无名管道,因为没有名字,仅仅能用于亲缘关系的进程间通信(很多其它详情.请看<无名管道>).为了克服这个缺点.提出了命名管道(FIFO).也叫有名管道.FIFO 文件. 命名 ...

  3. Linux 卸载Oracle 11G

    卸载oracle11G数据 1.使用SQL*PLUS停止数据库[oracle@OracleTest oracle]$ sqlplus /nologSQL> connect / as sysdba ...

  4. oc-13-多文件

    Dog.h #import <Foundation/Foundation.h> @interface Dog : NSObject { @public NSString *_name; i ...

  5. oralce 函数 FOR windows 跟踪神器

    https://github.com/dennis714 http://www.yurichev.com

  6. 学习笔记之高质量C++/C编程指南

    高质量C++/C编程指南 http://man.lupaworld.com/content/develop/c&c++/c/c.htm 高质量C++/C编程指南(附录 C :C++/C 试题的 ...

  7. knockout 监控数组的缺点

    knockout的监控数组没有想象中的强大,只能监控数组元素的位置变化,或个数的增减,然后对视图对应区域进行同步. <!DOCTYPE html> <html> <hea ...

  8. 利用map可以对很大的数出现的次数进行记数

    Problem Description In the year 8888, the Earth is ruled by the PPF Empire . As the population growi ...

  9. 1.7.5 Faceting

    1. 分面(Faceting) 分面就是将搜索结果基于索引中的terms按类整理.搜索结果带有索引的term,没有term都带有该term匹配的文档数.分面使用户更容易探究搜索结果,缩小查询结果范围以 ...

  10. [Java] SSH框架笔记_SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...