http://blog.csdn.net/yin767833376/article/details/52153443

前言:上篇 JS组件系列——表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的。有园友在评论中提到了父子表的用法,今天就结合Bootstrap table的父子表和行列调序的用法再来介绍下它稍微高级点的用法。

bootstrap table系列:

  • JS组件系列——表格组件神器:bootstrap table
  • JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)
  • JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

一、效果展示

今天稍微改变下方式,先来看看实现效果,后面再介绍代码实现及注意事项。来,效果图来一发:

1、父子表效果图

2、行调序

调序前

拖动行调序到第一行

3、列调序

调序前

拖动列标题调序

调序后

二、父子表代码详解

上章我们介绍Bootstrap table基础用法的时候介绍过,初始化表格的时候有一个属性“detailView”,将它设置为true,在每行的前面即可看到一个“+”形状的图标。点击这个图标即触发加载子表格的事件。大概的原理就是如此,来看看代码,其实也很简单。

1、初始化表格,注册行展开事件

        $("#tb_powerset").bootstrapTable({url: '/api/MenuApi/GetParentMenu',method: 'get',detailView: true,//父子表//sidePagination: "server",pageSize: 10,pageList: [10, 25],columns: [{field: 'MENU_NAME',title: '菜单名称'}, {field: 'MENU_URL',title: '菜单URL'}, {field: 'PARENT_ID',title: '父级菜单'}, {field: 'MENU_LEVEL',title: '菜单级别'}, ],//注册加载子表的事件。注意下这里的三个参数!onExpandRow: function (index, row, $detail) {oInit.InitSubTable(index, row, $detail);}});

还是来看看子表加载事件onExpandRow对应方法function (index, row, $detail)的三个参数,

index:父表当前行的行索引。

row:父表当前行的Json数据对象。

$detail:当前行下面创建的新行里面的td对象。

第三个参数尤其重要,因为生成的子表的table在装载在$detail对象里面的。bootstrap table为我们生成了$detail这个对象,然后我们只需要往它里面填充我们想要的table即可。

2、我们来看oInit.InitSubTable()这个方法

    //初始化子表格(无线循环)oInit.InitSubTable = function (index, row, $detail) {var parentid = row.MENU_ID;var cur_table = $detail.html('<table></table>').find('table');$(cur_table).bootstrapTable({url: '/api/MenuApi/GetChildrenMenu',method: 'get',queryParams: { strParentID: parentid },ajaxOptions: { strParentID: parentid },clickToSelect: true,detailView: true,//父子表uniqueId: "MENU_ID",pageSize: 10,pageList: [10, 25],columns: [{checkbox: true}, {field: 'MENU_NAME',title: '菜单名称'}, {field: 'MENU_URL',title: '菜单URL'}, {field: 'PARENT_ID',title: '父级菜单'}, {field: 'MENU_LEVEL',title: '菜单级别'}, ],//无线循环取子表,直到子表里面没有记录onExpandRow: function (index, row, $Subdetail) {oInit.InitSubTable(index, row, $Subdetail);}});};

由此可以看出生成子表的原理就是创建一个table对象cur_table,然后再注册这个对象的表格初始化即可。是不是很简单~~

三、行调序代码详解

行调序的代码就更简单了,来看看。

1、需要额外引用两个js文件

<script src="~/Content/jquery-ui-1.11.4.custom/external/jquery.tablednd.js"></script>
<script src="~/Content/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js"></script>

2、在cshtml页面定义表格时,添加两个属性

<table id="tb_order" data-use-row-attr-func="true" data-reorderable-rows="true"></table>

然后js表格初始化的时候不需要做任何修改,加载出来的表格即可实现行调序的功能。

四、列调序代码详解

和行调序类似。列调序的使用如下:

1、额外引用几个js和css

<script src="~/Content/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js"></script>
<link rel="stylesheet" href="../assets/examples.css">
<link rel="stylesheet" href="https://rawgit.com/akottr/dragtable/master/dragtable.css">
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="https://rawgit.com/akottr/dragtable/master/jquery.dragtable.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

2、在cshtml页面定义表格时,添加一个属性

<table id="tb_departments" data-reorderable-columns="true"></table>

其他地方不用做任何修改。加载出来的表格即可实现列调序。有没有很简单。

五、控件过滤

本来这篇准备结束的,突然想起上章里面有一个搜索的功能,好像是服务端分页的时候搜索功能没法使用,于是想起之前再CS里面做过一个类似每个列过滤的功能,博主好奇心又起来了,bootstrap table是否也有这种表格每列过滤的功能,于是查看文档。结果不负所望,还真有~~我们来看看。

1、效果图展示

2、代码示例

(1)引入额外js

<script src="~/Content/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.js"></script>

(2)定义表格属性及表头属性

   <table id="tb_roles" data-filter-control="true"><thead><tr><th data-field="ROLE_NAME" data-filter-control="select">角色名称</th><th data-field="DESCRIPTION" data-filter-control="input">角色描述</th><th data-field="ROLE_DEFAULTURL" data-filter-control="input">角色默认页面</th></tr></thead></table>

因为这里定义了表头的属性,所以,js初始化的时候就不用定义列了。

(3)js初始化

 $('#tb_roles').bootstrapTable({url: '/Role/GetRole',method: 'get',toolbar: '#toolbar',striped: true,cache: false,striped: true,pagination: true,sortable: true,queryParams: function (param) {return param;},queryParamsType: "limit",detailView: false,//父子表sidePagination: "server",pageSize: 10,pageList: [10, 25, 50, 100],search: true,showColumns: true,showRefresh: true,minimumCountColumns: 2,clickToSelect: true,});

最开始,博主以为这种搜索只能用户客户端分页的情况,可是经过调试发现并非如此,原来搜索的条件都能通过json传递到服务端。我们来看调试的过程

后台接收参数,并反序列化

这样我们就能将查询的条件很好地传递到后台。很好很强大啊。这样就免去了扩展表格搜索功能的烦恼~~

六、总结

以上就是bootstrap table的一些扩展应用。可能未不全面,还有一些高级用法也没有介绍,比如行、列合并,行列冻结等等。但博主相信只要有文档,使用起来应该问题不大。源码还需整理,待整理好再发上来。园友们暂且先看看!!

二、bootstrap table 父子表和行列调序相关推荐

  1. bootstrapr表格父子框_JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)...

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

  2. bootstrapr表格父子框_JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】...

    Bootstrap Table是轻量级的和功能丰富的以表格的形式显示的数据,支持单选,复选框,排序,分页,显示/隐藏列,固定标题滚动表,响应式设计,Ajax加载JSON数据,点击排序的列,卡片视图等. ...

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

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

  4. bootstrap table 主子表 局部数据刷新(刷新子表)

    1.主表中设置data-detail-view="true",启用主子表模式: <table class="table table-striped" wi ...

  5. bootstraptable 汇总_JS组件系列——表格组件神器:bootstrap table

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

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

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

  7. 一、bootstrap table 初体验

    http://blog.csdn.net/yin767833376/article/details/52153487 前言:之前一直在忙着各种什么效果,殊不知最基础的Bootstrap Table用法 ...

  8. bootstrap table 实现父子表

    在进行项目时,用到了bootstrap table的父子表,现在记录下使用过程中遇到的坑. <!DOCTYPE html> <html> <head> <me ...

  9. bootstrapr表格父子框_使用Bootstrap Table建立父子表

    代码$(function() {var oTableInit = newObject();var oInit = newObject(); $('#tb_agentService').bootstra ...

最新文章

  1. SQL Server日志清除的两种方法 .
  2. 2018-3-4 nginx和Tengine 以及高并发的概念
  3. R语言泊松回归模型案例:基于AER包的affair数据分析
  4. spring JdbcTemplate 在项目中的浅层(5个使用场景)封装
  5. 关于智能车竞赛程序公正问题的讨论
  6. 手机长时间不用自动断网_不用蓝牙的感应音箱,只需百元!放上手机自动播放,媲美千元音质...
  7. 区块链死亡项目列表小程序:死亡硬币
  8. 人工智能:CNN过时了,有人提出GNN
  9. 2020 我的C++的学习之路 第八章函数
  10. 过滤器Filter(17/4/8)
  11. SQLSERVER 函数大全
  12. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--蜂鸣器封装(十七)
  13. SSM+家装管理系统 毕业设计-附源码191452
  14. java applet的方法_Java Applet的常用方法
  15. 高效的国产CAD设计工具,云端三维CAD设计平台:CrownCAD
  16. 【C 语言】文件操作 ( getc 和 putc 函数 )
  17. python爱心代码简单教程
  18. 临床执业助理医师(综合练习)题库【8】
  19. 如何维护一个1000 IP的免费代理池
  20. 用 Javascript 编写λ演算解释器

热门文章

  1. C语言求一个文件的长度,求二进制文件的长度
  2. 图片底侧空白缝隙解决方案(HTML、CSS)
  3. 守护你一生-守护线程(Java)
  4. Unity3D-VR_Gevr VR射线+tag的转换+物体展示
  5. JS实现点击复制目标内容
  6. PCL之计算点云质心---pcl::compute3DCentroid()
  7. java字面量和符号引用_JVM中的直接引用和符号引用
  8. ODBC访问数据库(转载)
  9. Unity(TransForm)
  10. 字符编码(ucs2 ucs4 utf)