jQuery+存储过程实现无刷新分页(九)
涉及到得知识点:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go CREATE PROCEDURE [dbo].[GetDataByPager]
(
@startIndex INT,--代表起始条数(从0开始)
@tableName VARCHAR(50),--代表分页的表名称
@pageSize INT=5,--代表每页的条数
@condition VARCHAR(1000)='1=1',--代表条件
@key VARCHAR(20)='id', --代表主键
@orderType VARCHAR(20)='desc' --代表排序方式
)AS
BEGIN
DECLARE @SQL VARCHAR(1000)
SET @SQL='select TOP ' +CONVERT(VARCHAR(20),@pagesize)+' * FROM '+@tableName
+' WHERE '+ @condition+' and '+@key+' NOT IN(SELECT TOP ' +CONVERT(VARCHAR(20),@startIndex)+' '+@key+' FROM '+@tableName+' where '+@condition+' order by '+@key+' '+@orderType+') order by '+@key+' '+@orderType
EXEC(@SQL)
END
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go --得到要分页的表的总记录数
CREATE PROCEDURE [dbo].[GetDataByPager_Count]
(
@tableName VARCHAR(200),
@condition VARCHAR(1000)='1=1'
)
AS
BEGIN
DECLARE @strsql VARCHAR(2000)
SET @strsql = 'select count(*) from '+@tableName+' where '+@condition
EXEC(@strsql)
END
DAL层:
public static partial class AuthorService
{
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="start">起始记录数(从1开始)</param>
/// <param name="limit">每页的条数</param>
/// <param name="condition">查询条件</param>
/// <returns></returns>
public static IList<Author> GetAuthorByPager(int start, int limit, string condition)
{
//string strsql = string.Format("Exec GetDataByPager2 {0},'{1}',{2},'{3}'", start, limit, condition);
string strsql = string.Format("Exec GetDataByPager {0},'{1}',{2},'{3}'", start - 1, "Author", limit, condition); return GetAuthorsBySql(strsql);
}
/// <summary>
/// 条件查询结果集数目
/// </summary>
/// <param name="condition">条件</param>
/// <returns></returns>
public static int GetAuthorByPager_Count(string condition)
{
//string strsql = string.Format("GetDataByPager_Count '{0}'", condition);
string strsql = string.Format("GetDataByPager_Count '{0}','{1}' ", "Author", condition);
return DBHelper.GetScalar(strsql);
}
}
BLL层代码:
public static partial class AuthorManager
{
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="start">起始记录数(从1开始)</param>
/// <param name="limit">每页的条数</param>
/// <param name="condition">查询条件</param>
/// <returns></returns>
public static IList<Author> GetAuthorByPager(int start, int limit, string condition)
{
return DAL.AuthorService.GetAuthorByPager(start, limit, condition);
}
/// <summary>
/// 条件查询结果集数目
/// </summary>
/// <param name="condition">条件</param>
/// <returns></returns>
public static int GetAuthorByPager_Count(string condition)
{
return DAL.AuthorService.GetAuthorByPager_Count(condition);
}
}
引用了两个常用的js 代码:
String.format = function() {
if (arguments.length == 0)
return null;
var str = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
}
function StringBuffer()
{
this._strings_=new Array();
}
StringBuffer.prototype.append = function(str)
{
this._strings_.push(str);
}
StringBuffer.prototype.toString=function(){
return this._strings_.join("");
}
UI层得到数据:
public partial class HandleAuthorList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["startIndex"] != null && Request["limit"] != null)
{
int startIndex = int.Parse(Request["startIndex"].ToString());
int limit = int.Parse(Request["limit"].ToString());
IList<Models.Author> authors = BLL.AuthorManager.GetAuthorByPager(startIndex, limit, "1=1");
string json = JsonHelper.Serialize(authors);
Response.Write(json);
}
else if (Request["type"] != null)
{
int rowCount= BLL.AuthorManager.GetAuthorByPager_Count("1=1");
Response.Write(rowCount);
}
}
}
Ajax异步刷新:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AuthorMgr.aspx.cs" Inherits="AuthorMgr" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title> <script src="scripts/jquery-1.2.6.js" type="text/javascript"></script> <script src="scripts/jquery-1.2.6-vsdoc-cn.js" type="text/javascript"></script> <script src="scripts/string.format.js" type="text/javascript"></script> <script src="scripts/StringBuffer.js" type="text/javascript"></script>
<script type="text/javascript">
<script type="text/javascript">
var pageIndex = 1; //用于保存或设置当前页数
var startIndex = 1; //用于保存或设置记录条数
var limit = 3; //用于设置分页的条数
var rowcount = 0; //表示总记录数
var pageCount = 0; //代表总页数
var oFooter = "<tr align='left' style='color:#003399;background-color:#99CCCC;'>"+
"<td colspan='4'><table border='0'>"+
"<tr><td><a>首页</a></td><td><a>下一页</a></td><td><a>上一页</a></td><td><a>最后一页</a></td></tr>" +
"</table></td></tr>"
function AjaxPager() {
var $table = $("#GridView1");
$("a", $table).attr("href", "javascript:void(0)")
.click(function() {
$("tr>td", $table).parent().remove();
var oA = $(this).text();
if (oA == "首页") {
pageIndex = 1;
} else if (oA == "上一页") {
pageIndex = pageIndex == 1 ? 1 : pageIndex - 1;
} else if (oA == "下一页") {
pageIndex = pageIndex >= pageCount ? pageIndex : pageIndex + 1;
} else {
pageIndex = pageCount;
}
startIndex = (pageIndex - 1) * limit + 1; $.getJSON("HandleAuthorList.aspx", { startIndex: startIndex, limit: limit }, function(josnArray) {
var sb = new StringBuffer();
$.each(josnArray, function(i, item) {
var trTemplate = "<tr style='color:#003399;background-color:White;'>" +
"<td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td>" +
"</tr>";
var oTr = String.format(trTemplate, item.id, item.au_Id, item.au_Lname, item.phone);
sb.append(oTr); }) $table.append(sb.toString());
if ($("td>a", $table).length == 0) $table.append(oFooter);
var $tableFooter = $("td>table", $table);
if (pageIndex == 1)
$("tr>td:gt(1)", $tableFooter).hide();
else if (pageIndex == pageCount)
$("tr>td:lt(2)", $tableFooter).hide();
AjaxPager(); })
});
}
$(document).ready(function() {
$.get("HandleAuthorList.aspx", { type: "getcount" }, function(data) {
rowcount = parseInt(data);
if (rowcount % limit == 0)
pageCount = rowcount / limit;
else
pageCount = parseInt(rowcount / limit) + 1;
AjaxPager();
}); });
</script>
</head>
<body>
<form id="form1" runat="server">
<div> <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC"
BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="Id"
DataSourceID="SqlDataSource1" EmptyDataText="没有可显示的数据记录。" PageSize="3"
Width="494px" EnableViewState="False">
<PagerSettings FirstPageText="首页" LastPageText="最后一页"
Mode="NextPreviousFirstLast" NextPageText="下一页" PreviousPageText="上一页" />
<RowStyle BackColor="White" ForeColor="#003399" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True"
SortExpression="Id" />
<asp:BoundField DataField="Au_Id" HeaderText="Au_Id" SortExpression="Au_Id" />
<asp:BoundField DataField="Au_Lname" HeaderText="Au_Lname"
SortExpression="Au_Lname" />
<asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
</Columns>
<FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
<PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:JQuerySimpleDBConnectionString1 %>"
DeleteCommand="DELETE FROM [Author] WHERE [Id] = @Id"
InsertCommand="INSERT INTO [Author] ([Au_Id], [Au_Lname], [Au_Fname], [Phone], [Addr], [City], [State], [Zip]) VALUES (@Au_Id, @Au_Lname, @Au_Fname, @Phone, @Addr, @City, @State, @Zip)"
ProviderName="<%$ ConnectionStrings:JQuerySimpleDBConnectionString1.ProviderName %>"
SelectCommand="SELECT [Id], [Au_Id], [Au_Lname], [Au_Fname], [Phone], [Addr], [City], [State], [Zip] FROM [Author] order by Id desc"
UpdateCommand="UPDATE [Author] SET [Au_Id] = @Au_Id, [Au_Lname] = @Au_Lname, [Au_Fname] = @Au_Fname, [Phone] = @Phone, [Addr] = @Addr, [City] = @City, [State] = @State, [Zip] = @Zip WHERE [Id] = @Id">
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Au_Id" Type="String" />
<asp:Parameter Name="Au_Lname" Type="String" />
<asp:Parameter Name="Au_Fname" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Addr" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="State" Type="String" />
<asp:Parameter Name="Zip" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Au_Id" Type="String" />
<asp:Parameter Name="Au_Lname" Type="String" />
<asp:Parameter Name="Au_Fname" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Addr" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="State" Type="String" />
<asp:Parameter Name="Zip" Type="String" />
<asp:Parameter Name="Id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource> </div>
</form>
</body>
</html>
jQuery+存储过程实现无刷新分页(九)的更多相关文章
- 无刷新分页 jquery.pagination.js
无刷新分页 jquery.pagination.js 采用Jquery无刷新分页插件jquery.pagination.js实现无刷新分页效果 1.插件参数列表 http://www.dtan.so ...
- jquery ajax php+mysql 无刷新分页 详细实例
最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...
- javascript;Jquery;获取JSON对象,无刷新分页,异步加载,异步删除,实例。
AjaxNewsList: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- ASP.NET Ajax简单的无刷新分页
最近练习了一些AJAX无刷新分页,写得比较简单,性能不知道怎么样,求大神指点,如有更好的分页提供,欢迎交流! 发话不多说了,直接上代码! 首先从网上下了一个JS分页,感觉挺好用的 (function( ...
- asp.net练习②——Paginaton无刷新分页
aspx代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server" ...
- MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)
我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下来我就将做一个模仿淘宝已买到的宝贝功能,不过我的是无刷新分页的. ...
- thinkphp ajax 无刷新分页效果的实现
思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...
- asp.net MVC4 +MVCpager 无刷新分页
本人菜鸟,最近在用MVC4和MVCpager做无刷新分页时,发现点击下一页时数据不是Ajax提交的,弄了好久终于找到原因,原来还是Jquery引用的问题,现在把代码粘出来,希望能帮到刚接触的程序员,第 ...
- MVC无刷新分页
MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能) 我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下 ...
随机推荐
- Hbase记录-Hbase其他工具
1.RowCounter工具可以查看某张表有多少行,效率非常高 2.count命令在数据量大的时候效率非常差 执行./hbase org.apache.hadoop.habse.mapreduce. ...
- CentOS下查找java环境变量
CentOS下通过命令查找java环境变量 [root@yuteng opt]# echo $JAVA_HOME /usr/java/default [root@yuteng opt]# which ...
- HDU - 3006 The Number of set(状态压缩位运算)
http://acm.hdu.edu.cn/showproblem.php?pid=3006 题意 给定n个集合,每个集合都是由大于等于1小于等于m的数字组成,m最大为14.问由给出的集合可以组成多少 ...
- QT_文本编辑器_源码下载
源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...
- PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)
先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...
- Git与GitHub学习笔记(四)合并远程分支
在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,gi ...
- ipython 编辑器 jupyter notebook如何将 ipynb 转成 py 并在 jupyter notebook 中继续引用
首先将 要被做成 module 的 ipython 代码 download as py 然后将 down 下来的 py 文件上传至 work 目录(也就是编写导入模块的py文件目录) 这部分 的 wo ...
- JAVA泛型中的类型擦除及为什么不支持泛型数组
一,数组的协变性(covariant array type)及集合的非协变性 设有Circle类和Square类继承自Shape类. 关于数组的协变性,看代码: public static doubl ...
- 20155302 2016-2017-2 《Java程序设计》第九周学习总结
20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ...
- 前段clam安装
前端模块化协同开发解决方案 —— clam 1. 打开后直接看最后一条https://blog.csdn.net/zhangwenwu2/article/details/581720422. node ...