问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Bootstrap实现分页及翻页

发布网友 发布时间:2022-04-23 09:42

我来回答

2个回答

热心网友 时间:2022-04-07 08:09

最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体的网站后台风格便能够统一,又不用自己去写一套分页的功能。
首先便是要下载Bootstrap Paginator了,github上便有这个的开源项目提供下载:
https://github.com/lyonlai/bootstrap-paginator
首先视图的上面应该需要引入js和css文件,主要有三个文件,分别是bootstrap的css,jquery以及Paginator的js文件。其中网上搜到,貌似jquery必须要1.8版本以上,这个我没有亲自去测试看过。于是视图的文件引用便:
<link href="css/bootstrap.css" rel="stylesheet">
<script type="text/javascript" src="js/jquery-1.8.1.js"></script>
<script type="text/javascript" src="js/bootstrap-paginator.js"></script>

然后,分页的功能当然是一个基于Ajax的局部刷新才能够吸引我们,当然这个便需要jquery的支持。之前自己搞的都是EasyUI的分页,这次也应该有点不同。
<script>
$(function () {
var carId = 1;
$.ajax({
url: "/OA/Setting/GetDate",
datatype: 'json',
type: "Post",
data: "id=" + carId,
success: function (data) {
if (data != null) {
$.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
$("#list").append('<table id="data_table" class="table table-striped">');
$("#list").append('<thead>');
$("#list").append('<tr>');
$("#list").append('<th>Id</th>');
$("#list").append('<th>部门名称</th>');
$("#list").append('<th>备注</th>');
$("#list").append('<th> </th>');
$("#list").append('</tr>');
$("#list").append('</thead>');
$("#list").append('<tbody>');
$("#list").append('<tr>');
$("#list").append('<td>' + item.Id + '</td>');
$("#list").append('<td>' + item.Name + '</td>');
$("#list").append('<td>备注</td>');
$("#list").append('<td>');
$("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">修改</button>');
$("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">删除</button>');
$("#list").append('</td>');
$("#list").append('</tr>');
$("#list").append('</tbody>');

$("#list").append('<tr>');
$("#list").append('<td>内容</td>');
$("#list").append('<td>' + item.Message + '</td>');
$("#list").append('</tr>');
$("#list").append('</table>');
});
var pageCount = eval("(" + data + ")").pageCount; //取到pageCount的值(把返回数据转成object类型)
var currentPage = eval("(" + data + ")").CurrentPage; //得到urrentPage
var options = {
bootstrapMajorVersion: 2, //版本
currentPage: currentPage, //当前页数
totalPages: pageCount, //总页数
itemTexts: function (type, page, current) {
switch (type) {
case "first":
return "首页";
case "prev":
return "上一页";
case "next":
return "下一页";
case "last":
return "末页";
case "page":
return page;
}
},//点击事件,用于通过Ajax来刷新整个list列表
onPageClicked: function (event, originalEvent, type, page) {
$.ajax({
url: "/OA/Setting/GetDate?id=" + page,
type: "Post",
data: "page=" + page,
success: function (data1) {
if (data1 != null) {
$.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
$("#list").append('<table id="data_table" class="table table-striped">');
$("#list").append('<thead>');
$("#list").append('<tr>');
$("#list").append('<th>Id</th>');
$("#list").append('<th>部门名称</th>');
$("#list").append('<th>备注</th>');
$("#list").append('<th> </th>');
$("#list").append('</tr>');
$("#list").append('</thead>');
$("#list").append('<tbody>');
$("#list").append('<tr>');
$("#list").append('<td>' + item.Id + '</td>');
$("#list").append('<td>' + item.Name + '</td>');
$("#list").append('<td>备注</td>');
$("#list").append('<td>');
$("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">修改</button>');
$("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">删除</button>');
$("#list").append('</td>');
$("#list").append('</tr>');
$("#list").append('</tbody>');

$("#list").append('<tr>');
$("#list").append('<td>内容</td>');
$("#list").append('<td>' + item.Message + '</td>');
$("#list").append('</tr>');
$("#list").append('</table>');
});
}
}
});
}
};
$('#example').bootstrapPaginator(options);
}
}
});
})
</script>

而在视图的主体部分便有两个div,一个用来呈现数据列表,一个用来放置选择页面的导航。
<div class="span9">
<label>部门列表</label>
<hr />
<div id="list"></div>

<div id="example"></div>
</div>

而后台这个GetDate的方法就像下面这样:
public ActionResult GetDate(int id, int? page)
{
int pageIndex = page ?? 1;//当前页
const int pageSize = 2;//这里用来设置每页要展示的数据数量,建议把这个写到web.config中来全局控制
//获取需要展示的部门数据
IEnumerable<MODEL.qgoa_department> list = OperateContext.Current.BLLSession.Iqgoa_departmentBLL.GetPagedList(pageIndex, pageSize, x => x.Id!=null, x=>x.Id);
//得到数据的条数
int rowCount = list.Count();
//通过计算,得到分页应该需要分几页,其中不满一页的数据按一页计算
if(rowCount%pageSize!=0)
{
rowCount = rowCount / pageSize + 1;
}
else
{
rowCount = rowCount / pageSize;
}

//转成Json格式
var strResult = "{\"pageCount\":"+rowCount+",\"CurrentPage\":"+pageIndex+",\"list\":" + JsonConvert.SerializeObject(list) + "}";
return Json(strResult, JsonRequestBehavior.AllowGet);
}

这个方法还是有点缺陷的,可以写的更加完美,就好像上面那个pageSize这个可以通过读取配置文件web.config来全局修改,这样管理起来也方便,另外对于页面这种属性:页码,当前页,数据数量等等的信息,可以做一个类来存储,如果网站的项目比较大的话,这样更加方便我们去更改自己的代码。

热心网友 时间:2022-04-07 09:27

没有用过这个呢。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...总是被情所困?要怎么样才能控制自己,对他不要那么在呼? 关于@synchronized,你所不知道的事情 怎么样才算得上熟悉多线程编程? 大学期间,有必要考驾照吗 酸奶怎么做奶酪 酸奶:奶酪 一个女人的在保安室用掐带把男保安勒死了这是什么电影 开场就是一个老头被钢绳给勒死,那是啥电影 鱼城镇下辖村 顾楼村位于哪个市 西门子plc cpu sr20中s与r各表示什么? 需要一些炫酷的游戏名字,希望大家帮帮忙 流式细胞仪可以检测caspase3吗 如何在vs2013中使用bootstrap 这是什么处理器? 带心 字的成语、或两个字带 心 的网名 cpu型号后面 SR1PS SR1QS SR15K 这些是什么意思 请教caspase-3的检测方法问题 苹果怎么关掉后台自动清理? bootstrap可以用于asp.net么 C# asp.net bootstrap样式未实现 基本教育教学设施指什么 为什么我的手机老是自动清理后台运行的应用? Bootstrap开发的MVC(Asp.net)的左右结构的页面如何实现局部跳转_百度... 心、必两个字同时造句 如何进行Caspase-3活性的流式细胞术检测 什么是教育设备设施 请问这个cpu是什么型号的,有大神能看出来吗? C# .net bootstrap 下拉菜单内的选项后台如何获取? 带心的两个字歌名 caspase是什么 王者荣耀炫酷的用户名字有哪些? 为什么oppo会自动清理后台? sr0tx cpu参数 wb压凋亡蛋白caspase3时需要把飘的细胞洗掉吗 Bootstrap-bootstrap有没有形式简单的文件上传组件 一夜过后,手机后台会被自动清理的问题怎么解决? elisa检测细胞裂解液中caspase 3 用什么裂解液 求大神告知该cpu表面上的字母和数字的含义 #if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr; #endif 是什么意思 海带为什么打成海带结? bootstrap框架包含了js,还要加js库?就是还要在里面加js库??? caspase-3表达位置:细胞核、质还是膜? 细胞凋亡caspase3表达增加吗 怎么解决oppo手机自动清理后台程序? pro caspase3和caspase3的区别 给游戏人物取个超炫名字??? c#mvc+bootstrap框架怎么搭建的 检测细胞凋亡值时caspase3/7与caspase3,caspase7有什么区别? bootstrap 导航条下拉菜单点击无反应?