Pagination.js + Sqlite web系统分页
前端使用 jquery pagination.js 插件。
环境准备:jquery.js、pagination.js、pagination.css
附件下载:https://files.cnblogs.com/files/motion/pagination.rar
引用的顺序一定是 jquery在 pagination的前面。
然后,操作方法可以写在闭包函数里。
第一步,在自己需要展示分页控件的地方创建个div 容器
<div class="card-body rec-pat p-0">
<div id="page_focus"></div>
</div>
然后使用 pagination.js 的方法初始化组件。
$(function () {
var pageIndex = 1; //页面索引初始值
var pageSize = 8; //每页显示条数初始化,修改显示条数,修改这里即可
$("#page_focus").pagination({
dataSource: function (done) {
var result = [];
$.ajax({
cache: false,
type: "post",
dataType: "json",
url: "/Home/GetTotalFocusPageCount",
async: false,
error: function () {
//showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
return false;
},
success: function (data) {
for (var i = 1; i < data; i++) {
result.push(i);
}
done(result);
}
});
},
pageSize: pageSize,
totalNumber: 120,
showGoInput: true,
showGoButton: true,
callback: function (data, pagination) {
PageCallback(data, pagination);
}
})
//翻页调用
function PageCallback(index, jq_page) {
initTable(jq_page.pageNumber, jq_page.pageSize);
}
})
/**init table */
function initTable(pageIndex, pageSize) { $.ajax({
cache: false,
type: "post",
dataType: "json",
url: "/Home/GetInitTable",
data: { pageIndex: pageIndex, pageSize: pageSize },
async: false,
error: function () {
//showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
return false;
},
success: function (data) {
if (data != null) {
$("#selectDataBody").html("");
$("#selectDataBody").append(template("userdefine_template", data)); }
}
});
pagination初始化的方法很多,官网上有很详细的教程。这里先介绍我所使用的这种方法。
首先是 dataSource参数,这里通过后台,获取总数据条数。 这个 /Home/GetTotalFocusPageCount 路由请求后返回的结果是总记录数,是个int型变量。后台的方法根据实际需要,见仁见智,没有标准写法。
public int GetTotalFocusPageCount(string userID)
{
try
{
int toalCount = 0; string strSql = $"SELECT count(*) from MyFocus where userid='{userID}'"; DataTable dt_Sqlect = sqliteHelper.GetSelectTable(strSql); if (dt_Sqlect.Rows[0][0] != null)
{
toalCount = Convert.ToInt32(dt_Sqlect.Rows[0][0].ToString());
} return toalCount;
}
catch (Exception ex)
{
LogInfoHelper.LogError(ex.Message, userID, "GetUserFocus");
return 0;
}
}
后台返回总记录条数后,循环给数组result 赋值,然后调用 done(result);这个done 在一开始方法定义就是一个参数
function (done) {};这个是pagination 自带的写法,要注意。这个方法会帮助根据 每页的条数计算出总页数,然后渲染到页面。
到这里页面渲染都可以了。
然后就是点击下一页的事件了,
也就是 callback 回调节点
callback: function (data, pagination) {
initTable(pagination.pageNumber,pagination.pageSize);
}
/**init table */
function initTable(pageIndex, pageSize) { $.ajax({
cache: false,
type: "post",
dataType: "json",
url: "/Home/GetInitTable",
data: { pageIndex: pageIndex, pageSize: pageSize },
async: false,
error: function () {
//showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
return false;
},
success: function (data) {
if (data != null) {
$("#selectDataBody").html("");
$("#selectDataBody").append(template("userdefine_template", data)); }
}
});
这里,通过ajax 向后台传参数 pageIndex和pageSize,后台根据参数查询相应页面的数据,返回数据集合,js再渲染到页面,整个分页流程就算完成了。
public string GetInitTable(int pageIndex, int pageSize)
{
try
{
pageIndex = pageIndex - 1;
string strSql_data = @$" SELECT * FROM [FinanceData] where 1=1
LIMIT {pageSize} offset {pageIndex * pageSize};"; DataTable dt_Sqlect = sqliteHelper.GetSelectTable(strSql_data); string JsonStringResult = string.Empty;
JsonStringResult = JsonConvert.SerializeObject(dt_Sqlect); return JsonStringResult;
}
catch (Exception ex)
{
LogInfoHelper.LogError(ex.Message, "GetInitTable)");
return "";
}
}
Pagination.js + Sqlite web系统分页的更多相关文章
- scroll pagination.js数据重复加载、分页问题
scroll pagination.js数据重复加载.分页问题 解决办法 参考资料: http://blog.csdn.net/dyw442500150/article/details/1753242 ...
- 无刷新分页 jquery.pagination.js
无刷新分页 jquery.pagination.js 采用Jquery无刷新分页插件jquery.pagination.js实现无刷新分页效果 1.插件参数列表 http://www.dtan.so ...
- Spring+Mybatis+jQuery.Pagination.js异步分页及JsonConfig的使用
在开发工作中经常用到异步分页,这里简单整理一下资料. 一.Controller方法 package com.lwj.controller; import javax.servlet.http.Http ...
- Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页
本博客介绍基于Spring Data这款orm框架加上Jquery.pagination插件实现的分页功能. 介绍一下Spring Data框架 spring Data : Spring 的一个子项目 ...
- js jquery.pagination.js分页
1.使用插件为 jquery.pagination.js ,如果没有这个js文件的话,我可以给发个. 首先引用 jquery.pagination.js (分页js),跟pagination.css( ...
- jquery.pagination.js分页
参数说明 参数名 描述 参数值 maxentries 总条目数 必选参数,整数 items_per_page 每页显示的条目数 ...
- (推荐)jquery.pagination.js分页
序言 本来想自己对这个分页使用做一些总结的,但发现大神们已经总结的很好了.所以给推荐一下. 转自:http://www.cnblogs.com/knowledgesea/archive/2013/01 ...
- ajax分页实现,jquery.pagination.js
1.前台使用ajax无刷新分页,主要需要生成分页的工具条,这里使用的是jquery.pagination.js 插件参数可以参考----张龙豪-jquery.pagination.js分页 下面贴出代 ...
- 分页插件pagination.js
项目中有分页功能,之前都是自己写,样式不好看,功能也简单,就找了这个插件pagination.js 页面导入pagination.js html代码 <div class="list_ ...
随机推荐
- 使用 @Transactional 时常犯的N种错误
@Transactional是我们在用Spring时候几乎逃不掉的一个注解,该注解主要用来声明事务.它的实现原理是通过Spring AOP在注解修饰方法的前后织入事务管理的实现语句,所以开发者只需要通 ...
- Centos8 Docker部署 .Net6 项目
.Net6项目发布 1.在VS中发布项目,并编写好Dockerfile文件 Dockerfile文件内容如下: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS ...
- [bzoj1483]梦幻布丁
对于每一个颜色用一个链表存储,并记录下:1.当前某种颜色的真实颜色:2.这种颜色的数量(用于启发式合并的判断):3.当前答案(即有几段),然后对于每一个操作简单处理一下就行了. 1 #include& ...
- [luogu7092]计数题
由于$\mu(i)$,因此每一个素数最多存在1次,当$k=0$答案必然为0 根据莫比乌斯和欧拉函数的积性,答案与对素数的划分无关,仅与每一个素数是否出现有关,换言之枚举素数出现的集合$P'$,答案即为 ...
- [loj3341]时代的眼泪
题意即求在区间$[l,r]$中且权值在$[x,y]$中的逆序对个数 考虑分块,逆序对个数包含4部分: 1.左/右块外内部,预处理出$i$到其所在块的块首/尾,小于/小于等于$j$(需要对$j$离散)的 ...
- 【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
问题描述 App Service使用jdbc连接MySQL服务,出现大量的 Communications link failure: com.mysql.cj.jdbc.exceptions.Com ...
- Codeforces 1089I - Interval-Free Permutations(析合树计数)
Codeforces 题面传送门 & 洛谷题面传送门 首先题目中涉及排列的 interval,因此可以想到析合树.由于本蒟蒻太菜了以至于没有听过这种神仙黑科技,因此简单介绍一下这种数据结构:我 ...
- 【豆科基因组】小豆(红豆)adzuki bean, Vigna angularis基因组2015
目录 一.来源 研究一:Draft genome sequence of adzuki bean, Vigna angularis 研究二:Genome sequencing of adzuki be ...
- R语言实战(第二版)-part 1笔记
说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...
- Python编译工具Anaconda(含有spyder+jupyter)
Anaconda的下载和安装 官方的下载地址:https://www.anaconda.com/distribution/ 安装程序为一个可执行程序文件,下载完成后双击执行程序即可完成安装.安装过程一 ...