一、简介

BootstrapTable是一个Bootstrap 3 的表格插件,支持单选, 复选框, 排序, 分页等功能

官网:http://bootstrap-table.wenzhixin.net.cn/

github:https://github.com/wenzhixin/bootstrap-table

二、常用属性

1.开启查询

search: true,
searchAlign: "left",
searchOnEnterKey: true, //回车查询

2.显示刷新按钮

showRefresh: true,

3.单选/多选

singleSelect: true,
clickToSelect: true,//点击行则选中
maintainSelected: false,//分页仍然选中
columns: [
  {
    field: 'Id',
    checkbox: true
  }]

获取选中的id列表

function deleteAll() {
var selection = $table.bootstrapTable('getSelections');
if (selection.length == 0) {
toastr.info('请至少选中一行记录');
return false;
}
swdel({},
function () {
var selects = new Array();
$.each(selection,
function (index, value, array) {
selects.push(value.Id);
}); $.post(deleteAllUrl,
{ "Id": selects },//后台获取Request.Form["id[]"]
function(result) {
if (result) {
if (result.code >= 0) {
toastr.success(result.msg, "操作成功");
                      $table.bootstrapTable('uncheckAll');//清空选中选中
$table.bootstrapTable('refresh');
} else {
toastr.warning(result.msg, "操作失败");
}
} else {
toastr.warning('请求失败');
}
},'json');
});
};

如果开启多选,查询的时候,使用 $table.bootstrapTable('uncheckAll');清除已选选项

4.开启分页

pagination: true,

sidePagination:'client' //或 'server' ,服务端必须使用url或ajax获取数据

客户端分页的数据格式:

[
{
"id": ,
"name": "Item 0",
"price": "$0"
},
]

服务端分页的数据格式:

{
"total": ,
"rows": [
{
"id": ,
"name": "Item 0",
"price": "$0"
}, 
]
}

5.数据源

后台模型

public class PagerDataModel<T>
{
public int total { get; set; }
public List<T> rows { get; set; }
public int page { get; set; } public PagerDataModel<T> Init(int skip,int limit)
{
this.page = (skip / limit) + ;
return this;
} public PagerDataModel( int skip, int limit)
{
Init(skip, limit);
}
}

分页接收的json格式: {total:0,page:0,rows:[{id:1}

$table.bootstrapTable({responseHandler: handler});

function handler(res) {
  return res; //如果使用server分页,这里使用res.row
}

6.单元格的格式化

  如行的删除按钮

$table.bootstrapTable({
columns: [
{
title: '操作',
align: 'center',
field: 'Status',
valign: 'middle',
formatter: formatOperat
}
]
}) function formatOperat(value, row, index) {
return ['<button type="button" onclick="deleteItem(\'' + row.Id + '\')" >移除</button>'];
}

7.行样式

直接css或class控制样式,

以下是隔行变色的写法,此效果使用 data-striped="true"可实现,这里用来做示例。

缺点:使用checkBox,它的背景色不会改变,

rowStyle: function (row, index) {
if (index % 2) {
//return { classes: "bg-info" };
return { css: { "background-color": "#f8f8f8" } };
}
return { classes: "" };
},

三、bug记录

1.三个联动table的使用jQuery Event的click-row.bs.table事件

如: 点击table1的行3次,在点击table2的行,这时候会导致连接table3的url进行了3次

$table1.on("click-row.bs.table", function (row, event) {
showTable2(event.Id);//显示第二个联动table
});
$table2.on("click-row.bs.table", function (row, event) {
showTable3(event.Id);//显示第三个联动table
});

解决:使用他自带的Option Event的onClickRow事件


$table.bootstrapTable({
url: url,
dataType: "json",
search: true,
searchAlign: "left",
buttonsAlign: "left",
showRefresh: true,
searchOnEnterKey: true,
clickToSelect: true,
singleSelect: true,
maintainSelected: false,
responseHandler: handler,
idField: "Id",
onClickRow: function (row, $element, field) {
showTable2(row.Id);
....//省略
},
columns: [
{
field: 'state',
radio: 'true'
},
...//省略
{
title: '操作',
align: 'center',
field: 'Status',
valign: 'middle',
formatter: formatOperat
} ]
})

2.使用radio,并启用clickToSelect: true, ,出现BUG:点击radio无反应

场景:实现点击行刷新另外一张表,但点击最后一个单元格不执行该操作,因为最后单元格自定义了自己的一系列操作

解决方法

  解析:启用clickToSelect后,单击行会自动选中chebox或者radio,触发onCheck事件;

    onCheck中如果直接写执行代码,但这些代码是和onClickCell是一样的,那么导致重复执行;

    最后通过引入外部curField来控制解决。

  代码:

            var curField = ;
$table.bootstrapTable({
url: "/Get?Id=1",
dataType: "json",
search: true,
searchAlign: "left",
buttonsAlign: "left",
showRefresh: true,
searchOnEnterKey: true,
clickToSelect: true,
singleSelect: true,
selectItemName: "custonSelectItem",
striped: true,
maintainSelected: false,
responseHandler: handler,
idField: "Id",
onClickCell: function (field, value, row, $element) {
curField = ;
if (field !== "Status") {
//执行代码
}
},
onCheck: function (row, $element) {
if (curField === ) {
//执行代码
} else {
curField = ;
}
},
columns: [
{
field: 'state',
radio: 'true'
},
{
title: '名称',
field: 'Name',
align: 'center',
valign: 'middle' },
{
title: '操作',
align: 'center',
field: 'Status',
valign: 'middle',
formatter: formatOperat
}
]
});

第九章 BootstrapTable的使用的更多相关文章

  1. 精通Web Analytics 2.0 (11) 第九章: 新兴分析—社交,移动和视频

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第九章: 新兴分析-社交,移动和视频 网络在过去几年中发生了不可思议的发展变化:从单向对话到双向对话的转变; 由视频,Ajax和 ...

  2. 第九章:四大组件之Broadcast Receiver

    第九章:四大组件之Broadcast Receiver   一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...

  3. [Effective Java]第九章 异常

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 第九章 C语言在嵌入式中的应用

    上章回顾 编码的规范和程序版式 版权管理和申明 头文件结构和作用 程序命名 程序注释和代码布局规范 assert断言函数的应用 与0或NULL值的比较 内存的分配和释放细节,避免内存泄露 常量特性 g ...

  5. Laxcus大数据管理系统2.0(11)- 第九章 容错

    第九章 容错 在当前,由于集群庞大的组织体系和复杂性,以及用户普遍要求低成本硬件,使得集群在运行过程中发生的错误概率,远远高于单一且性能稳定的小型机服务器,并且集群在运行过程中几乎是不允许停止的,这就 ...

  6. Android群英传》读书笔记 (4) 第八章 Activity和Activity调用栈分析 + 第九章 系统信息与安全机制 + 第十章 性能优化

    第八章 Activity和Activity调用栈分析 1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重 ...

  7. [转]Windows Shell 编程 第九章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987969】

    第九章 图标与Windows任务条 如果问一个非程序人员Windows最好的特色是什么,得到的答案应该是系统最有吸引力的图标.无论是Windows98现在支持的通用串行总线(USB)还是WDM(看上去 ...

  8. perl5 第九章 关联数组/哈希表

    第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...

  9. Knockout应用开发指南 第九章:高级应用举例

    原文:Knockout应用开发指南 第九章:高级应用举例 1   Contacts editor 这个例子和微软为演示jQuery Data Linking Proposal例子提供的例子一样的提供的 ...

随机推荐

  1. Python3学习笔记2:简易Web爬虫

    开发环境 基础语法那章的内容我是在Docker容器中玩的,但是真正做项目的时候,没有IDE的强大辅助功能来协助的话是很累人的一件事.因此从本文中,我选择使用Jetbrain的Pycharm这个IDE来 ...

  2. C#自定义ip控件

    前言:由于项目中有ip输入,但C#中又没有IP控件,如果直接放4个TextBox感觉又怎么好,还不好控制,于是可以通过自定义控件的方式来解决,就又了下面的自定义ip控件,该控件功能基本完善,如果还有未 ...

  3. windows添加默认路由

    由于GW的原因,我们无法使用强大的google,身为技术屌丝,这是不能容忍的,于是乎使用了VPN,但是VPN连上之后,悲剧发生了,我的服务器连不上了,怎么整 原来一切都是很简单,在windows上添加 ...

  4. WPF水珠效果按钮组

    效果图 相关知识 这部分基本就是废话,网上都能找到,我只不过是整理了以下.建议先不看,用到的时候可以回来看看 贝塞尔曲线 先来看两组图,有助于理解什么是贝塞尔曲线(图片取自维基百科,参考链接1) 二次 ...

  5. Tomcat (安装及web实现 基础)

     Tomcat服务器配置 安装:解压对应的版本就行 注意;不要把Tomcat放到有中文的和有空格的目录中 验证是否安装成功:进入安装盘的安装文件的bin目录下 执行startup bat 成功  80 ...

  6. 约瑟夫问题 小孩报数问题poj3750

    小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15228   Accepted: 6778 Descripti ...

  7. Linxu服务器上安装JDK小白教程

    一.环境 VMware12 Pro CentOS-6.7-i386-bin-DVD1 jdk-8u151-linux-i586 二.详细安装步骤 前提:需要卸载自己Linux上的jdk rpm -qa ...

  8. Effective Java 第三版——4. 使用私有构造方法执行非实例化

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  9. CSS clear 清除浮动,兼容各浏览器

    .clear:after{content:".";display:block;height:0;clear:both;visibility:hidden;} .clear{zoom ...

  10. Android从无知到有知——NO.1

    如期而至的软件设计大赛吹响了重生的号角.正如同我们的指导老师所说,这个暑假会影响你近几年的发展,也可能会决定你以后所走的道路. 是的.我身边就有非常好的样例,有些师哥师姐们常常跟我们说.软件大赛不仅使 ...