ASP.NET Ajax简单的无刷新分页
最近练习了一些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简单的无刷新分页的更多相关文章
- jquery ajax php+mysql 无刷新分页 详细实例
最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...
- TP2.0或3.1 或者 3.2 下使用ajax+php做无刷新分页(转+自创)
1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...
- Bootstrap Paginator分页插件+ajax 实现动态无刷新分页
之前做分页想过做淘宝的那个,但是因为是后台要求不高,就Bootstrap Paginator插件感觉还蛮容易上手,所以就选了它. Bootstrap Paginator分页插件下载地址: Downlo ...
- jquery+ajax(用ajax.dll)实现无刷新分页
利用ajax.dll那种方式的无刷新,在这就不说了,新朋友可以看下我的另一片文件http://www.cnblogs.com/dachuang/p/3654632.html 首先,这里用的是jquer ...
- asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...
- ajax实现的无刷新分页代码实例
一.html代码部分: <table class="table style-5"> <thead id="t_head"> ...
- 关于Ajax无刷新分页技术的一些研究 c#
关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...
- 本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如 ...
- ASP.NET中无刷新分页
上次介绍了我们代码写的刷新分页,这次就来说说无刷新分页. 这次我们是在上次的基础上改动了一些,我们都知道想要无刷新,就需要Ajax,在我们的ASP.NET中AJax是和一般处理程序配合着用的. 无刷新 ...
随机推荐
- (5)html表单
本节解说: html的表单. form * <form> 标签用于为用户输入创建 HTML 表单. 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. * < ...
- Java程序打包成jar包
方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] ...
- 【转】Android开发实践:自定义带消息循环(Looper)的工作线程
http://ticktick.blog.51cto.com/823160/1565272 上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也 ...
- Codeforces Round #181 (Div. 2) C. Beautiful Numbers 排列组合 暴力
C. Beautiful Numbers 题目连接: http://www.codeforces.com/contest/300/problem/C Description Vitaly is a v ...
- 推荐资料——最受网友力荐的30份HTML前端开发资料
w3cmark最近会新增一个栏目,专注于搜集前端资源的下载,包括和前端相关的电子书.文档PPT.手册.视频教程等等.而下载的媒介是用微博的微盘,至于为什么选择微盘的,那是因为和微博关联起来,通过微盘上 ...
- 三星galaxy s4问题解决及快捷操作
http://blog.csdn.net/pipisorry/article/details/38474827 三星galaxy s4更改锁屏方式时出现故障 屏幕锁定设置除password以外,其它锁 ...
- [051] 微信公众平台开发教程第22篇-怎样保证access_token长期有效
为了使第三方开发人员能够为用户提供很多其它更有价值的个性化服务,微信公众平台开放了很多接口,包含自己定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等,开发人员在调用这些接口时.都须要 ...
- j简单的递归
1 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有的信都装错信封共有多少种不同情况. 归纳法例子 1.有n个硬币(n为偶数)正面朝上排成一排,每次将n-1个硬币翻成朝上为止.编程让计算机把 ...
- Python高级编程–正则表达式(习题)
原文:http://start2join.me/python-regex-answer-20141030/ ############################################## ...
- 基于HTML5的捕鱼达人游戏网页版
之前给大家分享了html5实现的水果忍者,愤怒的小鸟,中国象棋游戏.今天给大家分享一款捕鱼达人(fishjoy)网页版游戏的源码.可以在线玩也可以下载到本地.它使用html5技术和javascript ...