bttable功能强大!同时支持申明方式和编程方式来使用!是wenzhixin主导开发一款开源的表格控件!

文档比较详尽,但要求初学者已经比较熟悉js,jquey等基本内容,否则可能许多代码无法阅读!

本文涉及的bootstrap-table版本为1.15.5,bootstrap版本4.3.1,jquery版本3.4.1

关于引入相关的css,js略!本文简要阐述两种使用方式。

一、申明式

申明式特点在于全部通过在 table标签开始区域设定各种选项,这些选项基本可以满足大部分的功能。

选项可以参考:https://bootstrap-table.com/docs/api/table-options/

<div class="query-content">
<table id="table"
data-toggle="table"
data-pagination=true
data-side-pagination= "server"
data-page-size=8
data-query-params="queryParam"
data-url="${pageContext.request.contextPath}/etl/dsconfig/getPage"
>
<thead>
<tr>
<th data-field="dsname">数据源名称</th>
<th data-field="dbtypename">类型</th>
<th data-field="version">版本号</th>
<th data-field="servername">服务器</th>
<th data-field="dbport" data-width="60" data-width-unit="px" >端口</th>
<th data-field="schemaname">模式(库)</th>
<th data-field="dbuser">用户</th>
<th data-field="dbpassword">密码</th>
<th data-field="jdbcclassname">jdbc类名</th>
<th data-filed="comments">备注</th>
<th data-field="addtime">添加时间</th>
<th data-field="lastoptime">最近修改时间</th>
<th data-field="dsname" data-width="180" data-width-unit="px" data-formatter="formatOperation">操作</th>
</tr>
</thead>
</table>
</div>

列dsname所涉及到格式方法通过  data-formatter来定义,本文对应的格式化方法为 formatOperation,具体代码如下:

function formatOperation(value, row, index) {
let statusTxt="";
if (value=="系统数据库"){
statusTxt=" disabled=true";
}
var res=
'<button name="btn_update" class="btn btn-primary btn-sm " '+statusTxt+' onclick="fnUpdateClick(\''+row.dsname+'\')">修改</button>'+
'<button name="btn_delete" class="btn btn-warning btn-sm " '+statusTxt+' onclick="fnDelClick(\''+row.dsname+'\')">删除</button>'+
'<button name="btn_test" class="btn btn-success btn-sm " onclick="fnTestClick(\''+row.dsname+'\')">测试</button>';
return res;
}

查询参数如下:

function queryParam(params) {
var param = {
offset: params.offset,
limit: params.limit,
sort: params.sort,
order: params.order,
page:(params.offset / params.limit) + 1,
rows:params.limit,
"dbtypename":$("#id_dbtypename").val(),
"dsname":$("#id_dsname").val()
}; return param;
}

注意:这个版本的bttable中,param参数是比较复杂,上文中定义的其实是完整参数的一部分(此类编程也只需要处理这一部分)。通过跟踪,可以了解params的全貌!

申明式

申明式本质上是bootsrap-table的js自动解析相关申明,之后再执行编程式方法,从而实现最终目的。

   优点:简单明了,开发速度快,代码好看;

   缺点:在document的onload中会自动被触发(可能有办法阻止,但暂时不知道如何处理),有的时候,可能不希望页面加载的时候就执行查询!

二、编程式

如果喜欢写代码,也可以直接使用编程方式,编程式的主要工作包括:表格定义(定义表头,各种选项)。

详细的可以参考官网的说明,或者直接查看开发版本中代码(src/constants/index.js 中关于DEFAULTS的详细说明)。

以下列出两段代码:初始化,自定义ajax查询

1.初始化

$('#table').bootstrapTable({
url: 'data/scores.json', // 表格数据来源
method: 'get',
pagination: true,
pageNumber: 1, //初始化加载第一页,默认第一页,并记录
pageSize: 5,
uniqueId: "id",
columns: [
{
field: 'id',
visible:false //不显示
},
{
field: 'name',
title: '姓名'
}, {
field: 'sex',
title: '性别'
}, {
field: 'birthday',
title: '出生日期'
},{
field: 'subjectname',
title: '科目名称'
},{
field: 'scoredate',
title: '考试日期'
},{
field: 'score',
title: '成绩',
formatter: function (value, row, index) {
console.log(value);
var res="";
if (value>50){
res= '<p style="color:green" >'+value+'</p>';
}
else{
res= '<p style="color:red" >'+value+'</p>';
} return res;
}
}
,{
field: 'id',
title: '操作',
formatter: function (value, row, index) {
var res='<input type=button value="删除" onclick="fnDel('+row.id+')>'+
'<input type=button value="修改" onclick="fnUpdate('+row.id+')>';
console.log(res);
return res;
}
}
]
});

上文是相对简单的一个初始化。

2.自定义ajax请求(需要和申明“data-ajax”一起使用)

function ajaxRequestPage(params){
$.ajax({
url: "${pageContext.request.contextPath}/etl/dsconfig/getPage",
type: "POST",
dataType: "json",
async:true,
data:{ "page":(params.data.offset / params.data.limit) + 1,
"rows":params.data.limit,
"dbtypename":$("#id_dbtypename").val(),
"dsname":$("#id_dsname").val(),
},
success: function(rs,status, xhr){
if (rs.flag==1){
params.success(
{ //注意,必须返回参数 params
"total": rs.data.total,
"rows": rs.data.rows
},
"ok", //这个好像暂时没有用到
xhr //在1.15.5 版本中,这个是关键,如果没有返回则总是会报错!
);
}
else{
alert(rs.msg);
}
},
error: function(jqXHR, textStatus, errorThrown){
$.alert({
title: '警告',
content: "查询数据源信息失败,网络错误:"+textStatus,
autoClose:'ok|500'
});
params.success(
{ //注意,必须返回参数 params
"total": 0,
"rows": 8
},
"ok", //这个好像暂时没有用到
jqXHR //在1.15.5 版本中,这个是关键,如果没有返回则总是会报错!
);
}
});
}

编程式

   优点:一切尽在掌握中!

   缺点:代码量稍微多了一点,看起来没有那么优雅!

三、学习方法要点

1.首先要有js基础,了解类,变量定义,事件等等基础知识

2.熟悉jquery和ajax,尤其是ajax对象的基本属性和方法。

3.仔细阅读官方文档,对table option和column option逐个验证!

bootstrap-table的简要使用的更多相关文章

  1. BootStrap table使用

    bootstrap table git address https://github.com/wenzhixin/bootstrap-table 引入文件 <link rel="sty ...

  2. bootstrap Table 中给某一特定值设置table选中

    bootstrap Table 中给某一特定值设置table选中 需求: 如图所示:左边地图人员选定,右边表格相应选中. 功能代码: //表格和图标联动 function changeTableSel ...

  3. JS组件系列——表格组件神器:bootstrap table

    前言:之前一直在忙着各种什么效果,殊不知最基础的Bootstrap Table用法都没有涉及,罪过,罪过.今天补起来吧.上午博主由零开始自己从头到尾使用了一遍Bootstrap Table ,遇到不少 ...

  4. JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)

    前言:上篇 JS组件系列——表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的.有园友在评论中提到了父子表的用法,今天就结合Boo ...

  5. JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

    前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...

  6. JS组件系列——Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案

    前言:最近项目里面需要用到表格的冻结列功能,所谓“冻结列”,就是某些情况下表格的列比较多,需要固定前面的几列,后面的列滚动.遗憾的是,bootstrap table里自带的fixed column功能 ...

  7. JS组件系列——Bootstrap Table 表格行拖拽

    前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到 ...

  8. JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

    前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行.博主用了半天时间研究了下,效果是出来了,但是感觉不尽 ...

  9. 后台系统组件:一丶bootstrap table

    http://www.cnblogs.com/landeanfen/p/4976838.html (bootstrap table) http://www.cnblogs.com/landeanfen ...

  10. Bootstrap Table Examples

    The examples of bootstrap table http://bootstrap-table.wenzhixin.net.cn/examples/ http://www.jq22.co ...

随机推荐

  1. VS2010-MFC(工具栏:工具栏资源及CToolBar类)

    转自:http://www.jizhuomi.com/software/215.html 上一节讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的 ...

  2. KVM热添加技术

    1.KVM热添加的种类 硬盘.网卡.内存.cpu 2.KVM热添加硬盘 1.在宿主机上创建硬盘 qemu-img create -f qcow2 /opt/web02_add01.qcow2 10G ...

  3. Java编译与反编译命令记录

    1.首先进入java文件所在的地址 1) e:/ 2) dir     (显示所有文件) 3) cd eclipse-workspace 2.使用javac命令编译Test.java文件,得到Test ...

  4. mac系统升级导致无法在iOS设备中运行Safari Web 调试器

    macOS系统升级之后,可能会导致Safari开发选项中没有iOS设备,进而无法运行Safari Web 调试器. 此问题的解决办法: 请转到设置>常规>重置>重置位置和隐私.现在, ...

  5. JS规则 多样化的我(变量赋值)我们使用"="号给变量存储内容,你可以把任何东西存储在变量里,如数值、字符串、布尔值等,

    多样化的我(变量赋值) 我们可以把变量看做一个盒子,盒子用来存放物品,那如何在变量中存储内容呢? 我们使用"="号给变量存储内容,看下面的语句: var mynum = 5 ; / ...

  6. arp协议简单介绍

    1. 什么是ARP? ARP (Address Resolution Protocol) 是个地址解析协议.最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供 ...

  7. java 压缩包

    package com.gome.budget.common.utils; import org.apache.commons.compress.archivers.ArchiveEntry; imp ...

  8. 【笔记篇】C#笔记1

    返回目录:目录请戳这里~ 以后的C#笔记如果不出意外的话都是Win10 Professional + VS2015 Professional出的,(当然还有直接在编译框敲的所以能不能过编译我也不知道┑ ...

  9. 内核下枚举进程 (二)ZwQuerySystemInformation

    说明: SYSTEM_INFORMATION_CLASS 的5号功能枚举进程信息.其是这个函数对应着ring3下的 NtQuerySystemInformation,但msdn上说win8以后ZwQu ...

  10. 洛谷 2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    一道水状压,然而不知道是不是太久没做过dp了,我盯着它二十分钟才反应过来.... 还把数组开小了WA了一发QAQ //Twenty #include<algorithm> #include ...