Jquery+Ajax+Json+存储过程实现高效分页
作者:mrr 发布时间:2022-04-25 02:22:30
标签:jquery,ajax,son,存储过程,分页
之前在做分页时,很多朋友都是用Jquery分页插件,之前我就用的jquery.paper,有需要的朋友可以联系我,接下来小编给大家分享用Jquery+Ajax+Json+存储过程实现高效分页。
实现此功能用分页存储过程,pagination,js样式,废话不多了,具体请看下面代码
分页存储过程:PAGINATION
CREATE PROCEDURE [dbo].[PAGINATION]
@FEILDS VARCHAR(),--要显示的字段
@PAGE_INDEX INT,--当前页码
@PAGE_SIZE INT,--页面大小
@ORDERTYPE BIT,--当为时 则为 desc 当为 时 asc
@ANDWHERE VARCHAR()='',--where语句 不用加where
@ORDERFEILD VARCHAR(), --排序的字段
@TABLENAME VARCHAR() --查询的表明
as
DECLARE @EXECSQL VARCHAR()
DECLARE @ORDERSTR VARCHAR()
DECLARE @ORDERBY VARCHAR()
BEGIN
set NOCOUNT on
IF @ORDERTYPE =
BEGIN
SET @ORDERSTR = ' > ( SELECT MAX(['+@ORDERFEILD+'])'
SET @ORDERBY = 'ORDER BY '+@ORDERFEILD+' ASC'
END
ELSE
BEGIN
SET @ORDERSTR = ' < ( SELECT MIN(['+@ORDERFEILD+'])'
SET @ORDERBY = 'ORDER BY '+@ORDERFEILD+' DESC'
END
IF @PAGE_INDEX = --当页码是第一页时直接运行,提高速度
BEGIN
IF @ANDWHERE=''
SET @EXECSQL = 'SELECT TOP '+STR(@PAGE_SIZE)+' '+@FEILDS+' FROM '+@TABLENAME+' '+@ORDERBY
ELSE
SET @EXECSQL = 'SELECT TOP '+STR(@PAGE_SIZE)+' '+@FEILDS+' FROM '+@TABLENAME+' WHERE '+@ANDWHERE+' '+ @ORDERBY
END
ELSE
BEGIN
IF @ANDWHERE=''
BEGIN --以子查询结果当做新表时 要给表名别名才能用
SET @EXECSQL = 'SELECT TOP'+STR(@PAGE_SIZE)+' '+@FEILDS+' FROM '+@TABLENAME+' WHERE '+@ORDERFEILD+
@ORDERSTR+' FROM (SELECT TOP '+STR(@PAGE_SIZE*(@PAGE_INDEX-))+' '+@ORDERFEILD+
' FROM '+@TABLENAME+' '+@ORDERBY+') AS TEMP) '+ @ORDERBY
END
ELSE
BEGIN
SET @EXECSQL = 'SELECT TOP'+STR(@PAGE_SIZE)+' '+@FEILDS+' FROM '+@TABLENAME+' WHERE '+@ORDERFEILD+
@ORDERSTR+' FROM (SELECT TOP '+ STR(@PAGE_SIZE*(@PAGE_INDEX-))+' '+@ORDERFEILD+
' FROM '+@TABLENAME+' WHERE '+@ANDWHERE+' '+@ORDERBY+') AS TEMP) AND '+@ANDWHERE+' '+ @ORDERBY
END
END
EXEC (@EXECSQL)--这里要加括号
END
分页样式:
<style type="text/css">
a,area { -moz-outline-style: none; blr:expression(this.onFocus=this.blur()); text-decoration:none}
div.badoo { padding:px; text-align:center; }
div.badoo a { border:px solid #ededed; padding:px px; color:#; border-radius:px; margin-right:px;}
div.badoo a:hover {border:px solid #ffa; color: #ffa; }
div.badoo a:active {border:px solid #ffa; margin-right:px;}
div.badoo span { border:px solid #EDEDED; padding:px px; color:#f;font-weight:bold; background:#FAFAFA; border-radius:px; margin-right:px;}
div.badoo span.disabled { border:px solid #EDEDED; padding:px px; color:#; margin-right:px; font-weight:;}
</style>
首先创建一般处理程序,读取数据库中内容,得到返回值.
创建文件,GetData.ashx.
我这里是用的存储过程,存储过程会再下面粘出来,至于数据只是实例,你们可根据需求自行读取数据
using System;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using Model;
context.Response.ContentType = "text/plain";
var pageIndex = context.Request["PageIndex"];
//判断当前索引存不存在,如果不存在则获取记录的总数。
if (string.IsNullOrEmpty(pageIndex))
{
//获取查询记录总数的sql语句
int count = ;
int.TryParse(new BLL.t_profit().SelectAllNum(), out count);
context.Response.Write(count);
context.Response.End();
}
//当根据索引获取数据
else
{
int currentPageIndex = ;
int.TryParse(pageIndex, out currentPageIndex);
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter("@FEILDS",SqlDbType.NVarChar,),
new SqlParameter("@PAGE_INDEX",SqlDbType.Int,),
new SqlParameter("@PAGE_SIZE",SqlDbType.Int,),
new SqlParameter("@ORDERTYPE",SqlDbType.Int,),
new SqlParameter("@ANDWHERE",SqlDbType.VarChar,),
new SqlParameter("@ORDERFEILD",SqlDbType.VarChar,)
};
parms[].Value = "id,name,sex,tel";//获取所有的字段
parms[].Value = pageIndex;//当前页面索引
parms[].Value = ;//页面大小
parms[].Value = ;//升序排列
parms[].Value = "";//条件语句
parms[].Value = "id";//排序字段
List<Book> list = new List<Book>();
using (SqlDataReader sdr = Yoodor.DAL.SqlHelper.ExecuteReader(CommandType.StoredProcedure, "PAGINATION", parms))
{
while (sdr.Read())
{
list.Add(new Book { id = sdr[].ToString(), name = sdr[].ToString(), sex = sdr[].ToString(), tel = sdr[].ToString() });
}
}
context.Response.Write(new JavaScriptSerializer().Serialize(list).ToString());//转为Json格式
}
public string id { get; set; }
public string name { get; set; }
public string sex { get; set; }
public string tel { get; set; }
样式代码:
<style type="text/css">
a,area { -moz-outline-style: none; blr:expression(this.onFocus=this.blur()); text-decoration:none}
div.badoo { padding:px; text-align:center; }
div.badoo a { border:px solid #ededed; padding:px px; color:#; border-radius:px; margin-right:px;}
div.badoo a:hover {border:px solid #ffa; color: #ffa; }
div.badoo a:active {border:px solid #ffa; margin-right:px;}
div.badoo span { border:px solid #EDEDED; padding:px px; color:#f;font-weight:bold; background:#FAFAFA; border-radius:px; margin-right:px;}
div.badoo span.disabled { border:px solid #EDEDED; padding:px px; color:#; margin-right:px; font-weight:;}
</style>
js代码
<script type="text/javascript">
$(function () {
$.post("GetData.ashx", null, function (data) {
var total = data;
PageClick(, total, );
});
PageClick = function (pageIndex, total, spanInterval) {
$.ajax({
url: "GetData.ashx",
data: { "PageIndex": pageIndex },
type: "post",
dataType: "json",
success: function (data) {
//索引从开始
//将当前页索引转为int类型
var intPageIndex = parseInt(pageIndex);
//获取显示数据的表格
var table = $("#content");
//清楚表格中内容
$("#content tr").remove();
//向表格中添加内容
for (var i = ; i < data.length; i++) {
table.append(
$("<tr><td>" +
data[i].id
+ "</td><td>" +
data[i].name
+ "</td><td>" +
data[i].sex
+ "</td><td>" +
data[i].tel
+ "</td></tr>")
);
} //for
//创建分页
//将总记录数结果 得到 总页码数
var pageS = total
if (pageS % == ) pageS = pageS / ;
else pageS = parseInt(total / ) + ;
var $pager = $("#pager");
//清楚分页div中的内容
$("#pager span").remove();
$("#pager a").remove();
//添加第一页
if (intPageIndex == ) {
// $pager.append("<span class='disabled'>第一页</span>");
}
else {
// var first = $("<a href='javascript:void()' first='" + + "'>第一页</a>").click(function () {
// PageClick($(this).attr('first'), total, spanInterval);
// return false;
// });
// $pager.append(first);
}
//添加上一页
if (intPageIndex == )
$pager.append("<span class='disabled'>上一页</span>");
else {
var pre = $("<a href='javascript:void()' pre='" + (intPageIndex - ) + "'>上一页</a>").click(function () {
PageClick($(this).attr('pre'), total, spanInterval);
return false;
});
$pager.append(pre);
}
//设置分页的格式 这里可以根据需求完成自己想要的结果
var interval = parseInt(spanInterval); //设置间隔
var start = Math.max(, intPageIndex - interval); //设置起始页
var end = Math.min(intPageIndex + interval, pageS)//设置末页
if (intPageIndex < interval + ) {
end = ( * interval + ) > pageS ? pageS : ( * interval + );
}
if ((intPageIndex + interval) > pageS) {
start = (pageS - * interval) < ? : (pageS - * interval);
}
//生成页码
for (var j = start; j < end + ; j++) {
if (j == intPageIndex) {
var spanSelectd = $("<span class='current'>" + j + "</span>");
$pager.append(spanSelectd);
} //if
else {
var a = $("<a href='javascript:void()'>" + j + "</a>").click(function () {
PageClick($(this).text(), total, spanInterval);
return false;
});
$pager.append(a);
} //else
} //for
//上一页
if (intPageIndex == Math.ceil(total / )) {
$pager.append("<span class='disabled'>下一页</span>");
}
else {
var next = $("<a href='javascript:void()' next='" + (intPageIndex + ) + "'>下一页</a>").click(function () {
PageClick($(this).attr("next"), total, spanInterval);
return false;
});
$pager.append(next);
}
//最后一页
if (intPageIndex == pageS) {
// $pager.append("<span class='disabled'>最后一页</span>");
}
else {
// var last = $("<a href='javascript:void()' last='" + pageS + "'>最后一页</a>").click(function () {
// PageClick($(this).attr("last"), total, spanInterval);
// return false;
// });
// $pager.append(last);
}
} //sucess
}); //ajax
}; //function
}); //ready
</script>
<table id="content">
</table>
<div id="pager" class="badoo"></div>
/// <summary>
/// Execute a SqlCommand that returns a resultset against the database specified in the connection string
/// using the provided parameters.
/// </summary>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>A SqlDataReader containing the results</returns>
public static SqlDataReader ExecuteReader( CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch (Exception ex)
{
conn.Close();
throw new Exception(ex.Message);
}
}
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 在上一篇文章中我介绍了使用Intent显式来实现页面向下跳转,接下来这篇文章主要介绍的是使用Intent隐式来实现向上跳转,什么意思呢,就是
- 目录IO简介1.流Stream 2.IO流的继承结构3 File文件类3.1概述3.2创建对象3.3常用方法 3.4 练
- C#中Directory.GetFiles() 函数的使用C#中Directory.GetFiles(string path , strin
- 有时我们获取到了页面需要在Java代码中进行解析,获取html中的数据,Jsoup是一个很方便的工具。一、什么是Jsoup?官网网站:htt
- 一,项目简介经过调查研究进行开发设计的这款仓库管理系统,主要是为商家提供商品货物进销存的信息化管理,以便让商家在竞争如此激烈的今天占据一定的
- 1.MyBatis简介MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的
- 前言:synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized
- Java实现PC微信扫码支付做一个电商网站支付功能必不可少,那我们今天就来盘一盘微信支付。微信支付官方网站业务流程:开发指引文档支付服务开发
- 仅供学习交流,禁止商业用途。如侵害利益,联系必删!前言最近一位小伙伴钟爱二次元文化,于是找到半次元这个app,但是很快他就遇到了问题。一、案
- 本文实例讲述了Android使用GPS获取用户地理位置并监听位置变化的方法。分享给大家供大家参考,具体如下:LocationActivity
- 今天来分析Configuration初始化的最后一部分mapper的加载。加载方法mapperElementXMLConfigBuilder
- 本文实例讲述了Java编程实现汉字按字母顺序排序的方法。分享给大家供大家参考,具体如下:String[] str0 = new String
- Android EditText限制输入字符的方法总结最近项目要求限制密码输入的字符类型, 例如不能输入中文。 &nb
- 开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格
- 本文实例讲述了C#使用foreach语句遍历二维数组的方法。分享给大家供大家参考。具体分析如下:如果通过for语句循环遍历二维数组需要两重循
- Java事件处理机制和适配器最重要的是理解事件源,监视器,处理事件的接口的概念。1.事件源:是能够产生时间的对象都可以叫事件源,比如文本框,
- 今天介绍一个实用的小知识点,如何将List转为Map<Object, List<Object>>1. 基本写法最开始
- JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C、C++代码,尤其是底层库文件
- 本文实例为大家分享了Java实现酒店客房管理系统的具体代码,供大家参考,具体内容如下LoginFrame.javapackage login
- 在上文实现的带小圆球的图片滑动的通用性较好,但是较复杂。现在也是利用 ViewPager ,但是却没有利用 ShapeDrawable 来实