BootstrapTable使用实例

一、bootstrapTable简单使用:

<link rel="stylesheet" href="./static/libs/bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./static/libs/bootstrap-table-master/bootstrap-table.css"> <script src="./static/libs/jquery/jquery-1.11.2.min.js"></script> <script src="./static/libs/bootstrap/js/bootstrap.js"></script> <script src="./static/libs/bootstrap-table-master/bootstrap-table.js"></script> <script src="./static/libs/bootstrap-table-master/locale/bootstrap-table-zh-CN.js"></script> <div id="item_info_toolbar"> <a href="javascript:void(0)" class="btn btn-default btn-sm" id="btnAddDept" style="text-decoration: none;" data-toggle="modal" data-target="#deptModal">创建</a>&nbsp;&nbsp; <a href="javascript:void(0)" class="btn btn-default btn-sm" id="btnAddDept" style="text-decoration: none;" data-toggle="modal" data-target="#adm-user-create-user">编辑</a>&nbsp;&nbsp; <a href="javascript:void(0)" class="btn btn-default btn-sm" id="btnAddDept" style="text-decoration: none;">删除</a>&nbsp;&nbsp; <a href="javascript:void(0)" class="btn btn-default btn-sm" id="btnEditDept" style="text-decoration: none;">排序</a> <a href="javascript:void(0)" class="btn btn-default btn-sm" id="btnEditDept" style="text-decoration: none;" onclick="getSelectValue()">获取选中行值</a> </div> <table id="table" data-toggle="table" class="table table-striped"> <thead> <tr> </tr> </thead> </table>
<script>
$('#table').bootstrapTable('destroy').bootstrapTable({
        url: 'data/' + 'adm-user' + '.json', method: 'POST', uniqueId: 'id', // 绑定ID,不显示 striped: false, //是否显示行间隔色 cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) sortable: true, //是否启用排序 sortOrder: "asc", //排序方式 sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*) undefinedText: '--', //singleSelect: true, // 单选checkbox,默认为复选 showRefresh : true, // 显示刷新按钮 showColumns : true, // 选择显示的列 toolbar: '#item_info_toolbar', // 搜索框位置 search: true, // 搜索开启, strictSearch: true, clickToSelect: true, // 点击选中行 pagination: true, //是否显示分页 pageNumber:1, //初始化加载第一页,默认第一页,并记录 pageSize:5,//每页显示的数量 pageList: [5, 10, 20, 50, 100],//设置每页显示的数量 paginationPreText:"上一页", paginationNextText:"下一页", paginationLoop:false, //showToggle: true, //是否显示详细视图和列表视图的切换按钮 //cardView: false, //是否显示详细视图 //detailView: false, //是否显示父子表 //showPaginationSwitch: true, //得到查询的参数 queryParams : function (params) { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的 var temp = { rows: params.limit, //页面大小 page: (params.offset / params.limit) + 1, //页码 sort: params.sort, //排序列名 sortOrder: params.order //排位命令(desc,asc) }; return temp; }, columns: [ { checkbox: true },{ field: 'username', title:'用户名', valign: 'middle', width: '16%', sortable: true },{ field: 'fullname', title:'姓名', width: '16%' },{ field: 'status', title:'密码认证', width: '16%' },{ field: 'availableSpace', title:'智能卡认证', valign: 'middle', width: '16%' },{ field: 'totalSpace', title:'个人空间配额', width: '16%' },{ field: 'storageServer', title:'私密空间配额', formatter: operateFormatter } ], onLoadSuccess: function () { alert('表格加载成功!'); }, onLoadError: function () { showTips("数据加载失败!"); }, onDblClickRow: function (row, $element) { var id = row.ID; //EditViewById(id, 'view'); }, rowStyle: function (row, index) { //设置行的特殊样式 //这里有5个取值颜色['active', 'success', 'info', 'warning', 'danger']; var strclass = ""; if (index == 1) { strclass = "warning"; console.log(row); } return { classes: strclass } } }); function getSelectValue(){ var a = $table.bootstrapTable('getSelections');//获取选中行的数据 if(a.length > 0){ console.log(a); } } function operateFormatter (value, row, index) { var result = '<button class="btn btn-action" title="激活USBKEY认证" onclick=""><i class="glyphicon glyphicon-pencil"></i></button>' return result; } </script>

adm-user: 

    [
        {
        	"id": 2018100701,
            "username": "user1",
            "fullname": "用户1", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100702, "username": "user2", "fullname": "用户2", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100703, "username": "user3", "fullname": "用户3", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100704, "username": "user4", "fullname": "用户4", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100705, "username": "user5", "fullname": "用户5", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100706, "username": "user6", "fullname": "用户6", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100707, "username": "user7", "fullname": "用户7", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100708, "username": "user8", "fullname": "用户8", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100709, "username": "user9", "fullname": "用户9", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100710, "username": "user10", "fullname": "用户10", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" }, { "id": 2018100711, "username": "user11", "fullname": "用户11", "status": "启用", "availableSpace": "10GB", "totalSpace": "20GB", "storageServer" : "nas1" } ]

 二、 利用bootstrapTable来设置要隐藏和显示的列:

$(function () {
//初始化table
  LoadingDataListOrderRealItems();
//隐藏列   $('#tableOrderRealItems').bootstrapTable('showColumn', 'ShopName');   $('#tableOrderRealItems').bootstrapTable('hideColumn', 'GoodsId');   $('#tableOrderRealItems').bootstrapTable('hideColumn', 'OrderItemId');   $('#tableOrderRealItems').bootstrapTable('hideColumn', 'ShopName');         $('#tableOrderRealItems').bootstrapTable('hideColumn', 'SellerName'); }); 

三、 也可以直接使用hidden属性来设置:

columns: [
    {
          field: 'OrderId',
          title: '#',
          align: 'center',  }, {       field: 'OrderItemId',       title: 'OrderItemId',       align: 'left',       hidden:true,  }, {       field: 'GoodsId',       title: 'GoodsId',       align: 'left',       hidden:true,  }, {       field: 'OrderCode',       title: '订单编号',       align: 'left', } ]

四、如何获取数据:

方式一:表格中配置

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css"> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/bootstrap-table.min.css"> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script src="https://cdn.bootcss.com/bootstrap/4.1.1/js/bootstrap.js"></script> <!-- Latest compiled and minified JavaScript --> <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/bootstrap-table.min.js"></script> <!-- Latest compiled and minified Locales --> <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/locale/bootstrap-table-zh-CN.min.js"></script> </head> <body> <table id="table" data-toggle="table" data-url="data/table.json" data-pagination="true" data-page-number=1 data-page-size=10 data-search=true data-show-refresh=true data-show-pagination-switch=true data-search-align="left" > <thead> <tr> <th data-field="id">id</th> <th data-field="name">name</th> <th data-field="price">price</th> <th data-field="column1">column1</th> <th data-field="column2">column2</th> <th data-field="column3">column3</th> <th data-field="column4">column4</th> </tr> </thead> </table> <script> $(function () { //隐藏列 $('#table').bootstrapTable('hideColumn', 'column4'); }) </script> </body> </html>

 方式二:JavaScript配置

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css"> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/bootstrap-table.min.css"> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script src="https://cdn.bootcss.com/bootstrap/4.1.1/js/bootstrap.js"></script> <!-- Latest compiled and minified JavaScript --> <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/bootstrap-table.min.js"></script> <!-- Latest compiled and minified Locales --> <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.12.1/locale/bootstrap-table-zh-CN.min.js"></script> </head> <body> <button onclick="getData('table2')">点击获取数据</button> <table id="table" data-toggle="table"> <thead> <tr> <th data-field="id">id</th> <th data-field="name">name</th> <th data-field="price">price</th> <th data-field="column1">column1</th> <th data-field="column2">column2</th> <th data-field="column3">column3</th> <th data-field="column4">column4</th> </tr> </thead> </table> <script> function getData(url){ $('#table').bootstrapTable('destroy').bootstrapTable({ //'destroy' 是必须要加的==作用是加载服务器// //数据,初始化表格的内容Destroy the bootstrap table. url: 'data/' + url + '.json', pagination: true, pageList:[], pageNumber:1, pageSize:5,//每页显示的数量 paginationPreText:"上一页", paginationNextText:"下一页", paginationLoop:false, columns: [ { field: 'id', title:'id', valign: 'middle', },{ field: 'name', title:'name' },{ field: 'price', title:'price' },{ field: 'column1', title:'请求内容' },{ field: 'column2', title:'请求内容' },{ field: 'column3', title:'请求内容' },{ field: 'column4', title:'请求内容' } ] }) } </script> </body> </html>
[
    {
        "id": 0,
        "name": "Item 0",
        "price": "$0", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 1, "name": "Item 1", "price": "$1", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 2, "name": "Item 2", "price": "$2", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 3, "name": "Item 3", "price": "$3", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 4, "name": "Item 4", "price": "$4", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 5, "name": "Item 5", "price": "$5", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 6, "name": "Item 6", "price": "$6", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 7, "name": "Item 7", "price": "$7", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 8, "name": "Item 8", "price": "$8", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 9, "name": "Item 9", "price": "$9", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 10, "name": "Item 10", "price": "$10", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 11, "name": "Item 11", "price": "$11", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 12, "name": "Item 12", "price": "$12", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 13, "name": "Item 13", "price": "$13", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 14, "name": "Item 14", "price": "$14", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 15, "name": "Item 15", "price": "$15", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 16, "name": "Item 16", "price": "$16", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 17, "name": "Item 17", "price": "$17", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 18, "name": "Item 18", "price": "$18", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 19, "name": "Item 19", "price": "$19", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" }, { "id": 20, "name": "Item 20", "price": "$20", "column1": "C 10", "column2": "C 20", "column3": "C 30", "column4": "C 40" } ]

五、BootstrapTable前后端完整实例(以ASP.NET为例):

以一个基于BootstrapTable控件的图书列表查询功能为实例(如图1)。注意本实例使用了ASP.NET MVC。

页面代码:

@{
Layout = null;
ViewBag.Title = "基于BootstrapTable的简单应用";
}
<!--添加相关样式引用-->
<link href="~/Content/bootstrap.min.css" rel="stylesheet"/> <link href="~/Content/bootstrap-table.min.css" rel="stylesheet"/> <div class="container body-content" style="padding-top:20px;"> <div class="panel panel-default"> <div class="panel-heading"> 查询条件 </div> <div class="panel-body"> <form class="form-inline"> <div class="row"> <div class="col-sm-4"> <label class="control-label">图书名称:</label><input id="txtTitle" type="text" class="form-control"> </div> <div class="col-sm-4"> <label class="control-label">图书作者:</label><input id="txtAuthor" type="text" class="form-control"> </div> <div class="col-sm-4"> <label class="control-label">出版社:</label><input id="txtPublish" type="text" class="form-control"> </div> </div> <div class="row text-right" style="margin-top:20px;"> <div class="col-sm-12"> <input class="btn btn-primary" type="button" value="查询" onclick="SearchData()"><input class="btn btn-default" type="button" value="批量删除" onclick="BtchDeleteBook()"> </div> </div> </form> </div> </div> <table id="table"> </table> </div> <!--添加相关脚本引用--> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/bootstrap.min.js"></script> <script src="~/Scripts/bootstrap-table.min.js"></script> <script src="~/Scripts/bootstrap-table-zh-CN.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $('#table').bootstrapTable({ url: '@Url.Action("SearchBookInfo", "Home")', queryParamsType: '', //默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort// queryParams: queryParams, method: "post", pagination: true, pageNumber: 1, pageSize: 2, pageList: [10, 20, 50, 100], sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) striped: true, //是否显示行间隔色 cache: false, uniqueId: "BookId", //每一行的唯一标识,一般为主键列 height:300, paginationPreText: "上一页", paginationNextText: "下一页", columns: [ { checkbox: true }, { title: '序号', width: 50, align: "center", formatter: function (value, row, index) { return index + 1; } }, { title: '图书名称', field: 'Title' }, { title: '图书作者', field: 'Author' }, { title: '销售价格', field: 'Price' }, { title: '出版社', field: 'Publish' }, { title: '出版时间', field: 'PublishDate', formatter: function (value, row, index) { if (value == null) return ""; else { var pa = /.*\((.*)\)/; var unixtime = value.match(pa)[1].substring(0, 10); return getShortTime(unixtime); } } }, { title: '操作', field: 'BookId', formatter: function (value, row, index) { var html = '<a href="javascript:EditBook('+ value + ')">编辑</a>'; html += ' <a href="javascript:DeleteBook(' + value + ')">删除</a>'; return html; } }] }); }); //查询条件 function queryParams(params) { return { pageSize: params.pageSize, pageIndex: params.pageNumber, Title: $.trim($("#txtTitle").val()), Author: $.trim($("#txtAuthor").val()), Publish: $.trim($("#txtPublish").val()), }; } //查询事件 function SearchData() { $('#table').bootstrapTable('refresh', { pageNumber: 1 }); } //编辑操作 function EditBook(bookId){ alert("编辑操作,图书ID:" + bookId); } //删除操作 function DeleteBook(bookId) { if (confirm("确定删除图书ID:" + bookId + "吗?")) { alert("执行删除操作"); } } //批量删除 function BtchDeleteBook(){ var opts = $('#table').bootstrapTable('getSelections'); if (opts == "") { alert("请选择要删除的数据"); } else { var idArray = []; for (var i = 0; i < opts.length; i++) { idArray.push(opts[i].BookId); } if (confirm("确定删除图书ID:" + idArray + "吗?")) { alert("执行删除操作"); } } } function getTime(/** timestamp=0 **/) { var ts = arguments[0] || 0; var t, y, m, d, h, i, s; t = ts ? new Date(ts * 1000) : new Date(); y = t.getFullYear(); m = t.getMonth() + 1; d = t.getDate(); h = t.getHours(); i = t.getMinutes(); s = t.getSeconds(); // 可根据需要在这里定义时间格式 return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + ' ' + (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s); } function getShortTime(/** timestamp=0 **/) { var ts = arguments[0] || 0; var t, y, m, d, h, i, s; t = ts ? new Date(ts * 1000) : new Date(); y = t.getFullYear(); m = t.getMonth() + 1; d = t.getDate(); // 可根据需要在这里定义时间格式 return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d); } </script>

控制器代码:

/// <summary>
/// 查询图书信息
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public JsonResult SearchBookInfo(BookInfo param, int pageSize, int pageIndex){
    //获取图书列表
    List<BookInfo> bookList = GetBookList();
    //根据条件筛选数据
    if (!String.IsNullOrEmpty(param.Title))    {
        bookList = bookList.Where(a => a.Title.Contains(param.Title)).ToList();
    }
    if (!String.IsNullOrEmpty(param.Author))    {
        bookList = bookList.Where(a => a.Author.Contains(param.Author)).ToList();
    }
    if (!String.IsNullOrEmpty(param.Publish))    {
        bookList = bookList.Where(a => a.Publish.Contains(param.Publish)).ToList();
    }
    //BootstrapTable的返回结果
    BootstrapTableResult<BookInfo> result = new BootstrapTableResult<BookInfo>();
    result.total = bookList.Count;
    result.rows = bookList;
    return Json(result);
}

/// <summary>
/// 获取图书列表
/// </summary>
/// <returns></returns>
public List<BookInfo> GetBookList(){
    List<BookInfo> bookList = new List<BookInfo>();
    BookInfo book1 = new BookInfo(){
        BookId = 8,
        Title = "ASP.NET MVC 5高级编程",
        Author = "加洛韦",
        Publish = "清华大学出版社",
        PublishDate = new DateTime(2017, 08, 15),
        Price = 29.99
    };
    bookList.Add(book1);
    BookInfo book2 = new BookInfo() {
        BookId = 9,
        Title = "Java从入门到精通",
        Author = "明日科技",
        Publish = "清华大学出版社",
        PublishDate = new DateTime(2015, 09, 28),
        Price = 38.55
    };
    bookList.Add(book2);
    BookInfo book3 = new BookInfo() {
        BookId = 10,
        Title = "Oracle从入门到精通",
        Author = "秦靖",
        Publish = "机械工业出版社",
        PublishDate = new DateTime(2014, 10, 08),
        Price = 38.55
    };
    bookList.Add(book3);
    return bookList;
}

其他代码:

/// <summary>
/// 图书信息实体类
/// </summary>
public class BookInfo{
    public int BookId { set; get; }             //图书ID
    public string Title { set; get; }           //图书名称
    public string Author { set; get; }          //图书作者
    public string Publish { set; get; }         //出版社
    public DateTime PublishDate { set; get; }   //出版时间
    public Double Price { set; get; }           //销售价格
}
/// <summary>
/// BootstrapTable返回结果类
/// </summary>
public class BootstrapTableResult<T>{
    public int total { get; set; }      //总记录数
    public List<T> rows { get; set;}   //数据列表
}

六、Bootstrap table中toolbar新增条件查询及refresh参数使用方法:

我们想要在bootstrap-table中自定义查询条件如何实现呢?这些自定义的按钮、输入框是定义在哪个位置呢?在配置中有这样一个属性:

//工具按钮用哪个容器
toolbar: '#toolbar',
<div id="toolbar"></div>

我们定义的查询条件就是放入到这个div中的,先看一下我们期望的效果:

要实现这样的效果,我们首先要新增查询表单:

<div class="container">
 <div class="row"> <div class="table-responsive"> <div id="toolbar"> <form class="form-inline"> <div class="form-group"> <label class="sr-only" for="product_line">产品线</label> <div class="input-group"> <div class="input-group-addon">产品线</div> <select class="form-control" name="product_line" id="productLine"> <option value="">请选择产品线...</option> </select> </div> </div> <div class="form-group"> <label class="sr-only" for="msg_type">消息类型</label> <div class="input-group"> <div class="input-group-addon">消息类型</div> <select class="form-control" name="msg_type" id="msgType"> <option value="">请选择消息类型...</option> </select> </div> </div> <div class="form-group"> <label class="sr-only" for="msg_type">消息类型</label> <div class="input-group"> <div class="input-group-addon">消息类型</div> <input type="text" class="form-control" name="searchTexts" id="searchText" placeholder="请输入消息名称或内容关键字..."> </div> </div> <button type="button" class="btn btn-primary queryButton">查询</button> </form> </div> <table id="table" ></table> </div> </div> </div>

 在请求服务器中传递的参数中获取对应的值:

//请求服务器数据
 queryParams: function queryParams(params){ var param = { pageNumber: params.pageNumber, pageSize: params.pageSize, sortName: params.sortName, sortOrder: params.sortOrder, searchText: $("#searchText").val(), msgType: $("#msgType").val(), productLine: $("#productLine").val() }; return param; } 

最后是提交到服务端:

//查询
$(document).on('click', ".queryButton",function(){ $('#table').bootstrapTable('refresh'); }); 

这个refresh官方文档是这样描述的:

刷新远程服务器数据,可以设置{silent: true}以静默方式刷新数据,并设置{url: newUrl}更改URL。 
要提供特定于此请求的查询参数,请设置{query: {foo: 'bar'}}。

猜你喜欢

转载自www.cnblogs.com/samve/p/9757847.html