


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)的三个参数,//初始化子表格(无线循环)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,然后再注册这个对象的表格初始化即可。是不是很简单~~<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表格初始化的时候不需要做任何修改,加载出来的表格即可实现行调序的功能。
<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>其他地方不用做任何修改。加载出来的表格即可实现列调序。有没有很简单。




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初始化的时候就不用定义列了。
$("#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的一些扩展应用。可能未不全面,还有一些高级用法也没有介绍,比如行、列合并,行列冻结等等。
以上内容是小编给大家介绍的JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】 的相关知识,希望对大家有所帮助!