Bootstrap table 随手记

1.表格行样式

关于表格行的样式设置,效果不难,自己用jQuery设置tr的背景色也可以实现。但bootstrap table提供了设置行的背景色机制,我们可以用它内置的api。添加rowStyle属性:

rowStyle: function(row, index) {
    //这里有5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger'];
    var strclass = "";
    if (Number(row.age) < 18) {
        strclass = 'success';
    } else {
        return {};
    }
    return { classes : strclass }
}


bootstrap table支持5中表格的行背景色,分别是'active', 'success', 'info', 'warning', 'danger'这五种,至于每种对应的背景颜色,将代码运行起来就可看到。关于这个方法的返回值,按照bootstrap table的规则,必须返回一个json格式的对象型如: { classes : strclass} 。
2.表格行内编辑

(1)引入额外的js文件

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

<table id="tb_departments">
    <thead>
        <tr>
            <th data-field="Name" data-editable="true">部门名称</th>
            <th data-field="ParentName">上级部门</th>
            <th data-field="Level" data-editable="true">部门级别</th>
            <th data-field="Desc" data-editable="true">描述</th>
        </tr>
    </thead>
</table>


如果是在js里面初始化,写法如下:

columns: [{
        checkbox: true
    }, {
        field: 'id',
        title: 'ID',
        align: 'center'
    }, {
        field: 'age',
        title: 'AGE',
        editable: {
            type: 'text',
            title: 'AGE',
            validate: function (v) {
                if (!v) return '年龄不能为空';
                if (isNaN(v)) return '年龄必须是数字';
                var age = parseInt(v);
                if (age <= 0) return '年龄必须是正整数';
            }
        },
        align: 'center'
    }, {
        field: 'cupSize',
        title: 'CupSize',
        editable: true,
        align: 'center'
    } ]

(3)在js里面初始化表格的时候注册编辑保存的事件

onEditableSave: function (field, row, oldValue, $el) {
    console.log(field);
    console.log(row);
    console.log(oldValue);
    console.log($el);
    console.log(JSON.stringify(row));
}


对应的方法里面需要自己处理保存的逻辑。四个参数field, row, oldValue, $el分别对应着当前列的名称、当前行数据对象、更新前的值、编辑的当前单元格的jQuery对象。

代码:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        <title>BootStrap Table使用</title>
        <!--Jquery组件引用-->
        <script type="text/javascript" src="js/jquery-2.2.3.min.js"></script>

        <!--bootstrap组件引用-->
        <script type="text/javascript" src="js/bootstrap.js"></script>
        <link rel="stylesheet" href="css/bootstrap.css" />

        <!--bootstrap table组件以及中文包的引用-->
        <script type="text/javascript" src="js/bootstrap-table.js"></script>
        <link rel="stylesheet" href="css/bootstrap-table.css" />
        <script type="text/javascript" src="js/bootstrap-table-zh-CN.js"></script>

        <!--页面js文件的引用-->
        <script type="text/javascript" src="js/main.js"></script>

        <!--bootstrap table editable组件引用-->
        <link rel="stylesheet" href="http://rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/css/bootstrap-editable.css">
        <script src="//rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/js/bootstrap-editable.js"></script>
        <script src="js/extensions/editable/bootstrap-editable.js"></script>
        <script src="js/extensions/editable/bootstrap-table-editable.js"></script>

    </head>

    <body>
        <div class="panel-body" style="padding-bottom:0px;">
            <div class="panel panel-default">
                <div class="panel-heading">查询条件</div>
                <div class="panel-body">
                    <form id="formSearch" class="form-horizontal">
                        <div class="form-group" style="margin-top:15px">
                            <label class="control-label col-sm-1" for="txt_search_departmentname">部门名称</label>
                            <div class="col-sm-3">
                                <input type="text" class="form-control" id="txt_search_departmentname">
                            </div>
                            <label class="control-label col-sm-1" for="txt_search_statu">状态</label>
                            <div class="col-sm-3">
                                <input type="text" class="form-control" id="txt_search_statu">
                            </div>
                            <div class="col-sm-4" style="text-align:left;">
                                <button type="button" style="margin-left:50px" id="btn_query" class="btn btn-primary">查询</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>

            <div id="toolbar" class="btn-group">
                <button id="btn_add" type="button" class="btn btn-default" data-toggle="modal" data-target="#insertModal">
                    <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
                </button>
                <button id="btn_edit" type="button" class="btn btn-default">
                    <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
                </button>
                <button id="btn_delete" type="button" class="btn btn-default">
                    <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除
                </button>
            </div>

            <!-- 模态框(Modal) -->
            <div class="modal fade" id="insertModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                                ×
                            </button>
                            <h4 class="modal-title" id="myModalLabel">
                                添加商品
                            </h4>
                        </div>
                        <div class="modal-body">
                            <select id="ps">
                                <option value="0">0</option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                            </select>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">
                                关闭
                            </button>
                            <button type="button" class="btn btn-primary" data-dismiss="modal">
                                确认
                            </button>
                        </div>
                    </div><!-- /.modal-content -->
                </div><!-- /.modal -->
            </div>

            <table id="tb_departments"></table>
        </div>
    </body>

    <script type="text/javascript">
        $(function () {

            //1.初始化Table
            var oTable = new TableInit();
            oTable.Init();
        
            //2.初始化Button的点击事件
            var oButtonInit = new ButtonInit();
            oButtonInit.Init();
        
        });


        var TableInit = function () {
            var oTableInit = new Object();
            //初始化Table
            oTableInit.Init = function () {
                $('#tb_departments').bootstrapTable({
                    url: '/girl/lS',                         //请求后台的URL(*)
                    method: 'post',                           //请求方式(*)
                    contentType: "application/x-www-form-urlencoded",
                    dataType: "json",                        //数据类型
                    toolbar: '#toolbar',                   //工具按钮用哪个容器
                    striped: false,                          //是否显示行间隔色
                    cache: false,                           //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                    pagination: true,                       //是否显示分页(*)
                    sortable: false,                        //是否启用排序
                    sortOrder: "asc",                       //排序方式
                    queryParamsType: '',
                    queryParams: oTableInit.queryParams,     //传递参数(*)
                    sidePagination: "server",               //分页方式:client客户端分页,server服务端分页(*)
                    pageNumber: 1,                           //初始化加载第一页,默认第一页
                    pageSize: 10,                           //每页的记录行数(*)
                    pageList: [10, 25, 50, 100],            //可供选择的每页的行数(*)
                    search: true,                           //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
                    strictSearch: true,                        //启用全匹配搜索,否则为模糊搜索
                    searchOnEnterKey: false,                //按回车触发搜索方法,否则自动触发搜索方法
                    showColumns: true,                      //是否显示所有的列
                    showRefresh: true,                      //是否显示刷新按钮
                    minimumCountColumns: 2,                 //最少允许的列数
                    clickToSelect: true,                    //是否启用点击选中行
                    //height: 500,                            //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
                    uniqueId: "ID",                         //每一行的唯一标识,一般为主键列
                    showToggle:true,                        //是否显示详细视图和列表视图的切换按钮
                    cardView: false,                        //是否显示详细视图
                    detailView: true,                          //是否显示父子表
                    rowStyle: function(row, index) {
                        //这里有5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger'];
                        var strclass = "";
                        if (Number(row.age) < 18) {
                            strclass = 'success';
                        } else {
                            return {};
                        }
                        return { classes : strclass }
                    },
                    columns: [{
                        checkbox: true
                    }, {
                        field: 'id',
                        title: 'ID',
                        align: 'center'
                    }, {
                        field: 'age',
                        title: 'AGE',
                        editable: {
                            type: 'text',
                            title: 'AGE',
                            validate: function (v) {
                                if (!v) return '年龄不能为空';
                                if (isNaN(v)) return '年龄必须是数字';
                                var age = parseInt(v);
                                if (age <= 0) return '年龄必须是正整数';
                            }
                        },
                        align: 'center'
                    }, {
                        field: 'cupSize',
                        title: 'CupSize',
                        editable: true,
                        align: 'center'
                    } ],
                    onClickRow: function (row, $element) {
                        curRow = row;
                    },
                    //注册加载子表的事件。注意下这里的三个参数!
                    onExpandRow: function (index, row, $detail) {
                        oInit.InitSubTable(index, row, $detail);
                    },
                    onEditableSave: function (field, row, oldValue, $el) {
                        console.log(field);
                        console.log(row);
                        console.log(oldValue);
                        console.log($el);
                        console.log(JSON.stringify(row));
                    }
                });
            };

            //得到查询的参数
            oTableInit.queryParams = function (params) {
                var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
//                    limit: params.limit,   //页面大小
//                    offset: params.offset,  //页码
                    pageNumber: params.pageNumber,
                    pageSize: params.pageSize,
//                    departmentname: $("#txt_search_departmentname").val(),
//                    statu: $("#txt_search_statu").val(),
                    search: params.search
                };
                return temp;
            };

            //初始化子表格(无线循环)
            var oInit = new Object();
            oInit.InitSubTable = function (index, row, $detail) {
                var parentid = row.id;
                var cur_table = $detail.html('<table></table>').find('table');
                $(cur_table).bootstrapTable({
                    url: '/girl/sub/lC',
                    method: 'post',
                    contentType: "application/x-www-form-urlencoded",
                    dataType: "json",                        //数据类型
                    queryParams: { strParentID: parentid },
                    ajaxOptions: { strParentID: parentid },
                    clickToSelect: true,
                    detailView: true,//父子表
                    uniqueId: "subId",
                    pageSize: 10,
                    pageList: [10, 25],
                    columns: [{
                        checkbox: true
                    }, {
                        field: 'subId',
                        title: 'SubId'
                    }, {
                        field: 'grade',
                        title: 'Grade'
                    }, {
                        field: 'name',
                        title: 'Name'
                    } ],
                    //无线循环取子表,直到子表里面没有记录
                    onExpandRow: function (index, row, $Subdetail) {
                        oInit.InitSubTable(index, row, $Subdetail);
                    }
                });
            };

            return oTableInit;
        };


        var ButtonInit = function () {
            var oInit = new Object();
            var postdata = {};
        
            oInit.Init = function () {
                //初始化页面上面的按钮事件
            };

            return oInit;
        };
    </script>

</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Bootstrap Table 是一个基于 Bootstrap 的可扩展的表格插件,它允许您使用 AJAX 数据源来轻松地显示、排序、搜索、分页和编辑数据表格。 Bootstrap Table 可以让您快速地创建并定制彼此独立的表格,这些表格可以应用于各种不同的场景中,比如报告、数据分析、管理面板等等。此外,Bootstrap Table 还提供了许多有用的特性和功能,比如排序、分页、搜索、多选、单选、详细视图、卡片视图等等。总之,Bootstrap Table 是一个非常强大和灵活的表格插件,适用于各种不同的项目和场景。 ### 回答2: BootstrapTable是一种强大的基于Bootstrap框架的表格插件,它可以帮助我们轻松地创建美观而功能丰富的数据表格。它提供了许多有用的功能,包括排序、搜索、分页等,可以满足我们处理大量数据的需求。 使用BootstrapTable非常简便。我们只需导入相关的CSS和JS文件,然后在HTML中创建一个表格容器,通过调用BootstrapTable的初始化方法即可将一个普通的表格转变为功能强大的BootstrapTable表格。我们可以通过设置不同的参数来自定义表格的外观和功能。 BootstrapTable提供了许多可选的插件和扩展,使我们能够根据项目需求添加更多的功能。例如,可通过引入扩展插件来实现导出表格数据、多语言支持、可编辑表格等功能。 使用BootstrapTable,我们可以很方便地对表格进行排序、搜索和分页等操作。内置的搜索功能可以帮助我们快速定位所需的数据,而分页功能可以使我们在处理大量数据时保持页面的清晰和快速响应。 总之,BootstrapTable是一个非常实用和灵活的表格插件,它可以帮助我们展示和处理数据,提升用户体验和开发效率。无论是小型网站还是大型数据管理系统,BootstrapTable都是一个不错的选择。 ### 回答3: Bootstrap Table 是一款基于 Bootstrap 框架的表格插件,它提供了一种简便易用的方法来创建和管理动态表格。使用 Bootstrap Table,可以很方便地向网页中添加数据表格并进行各种操作,如排序、筛选、分页等。 Bootstrap Table 的优点主要有以下几个方面:首先,使用 Bootstrap Table 可以快速地创建和定制表格,无需编写复杂的 HTML 和 CSS 代码,只需要简单配置就能实现各种功能。其次,Bootstrap Table 具有良好的兼容性,可以在各种设备和浏览器中正常运行,并且提供了响应式布局,在移动设备上也能提供良好的用户体验。此外,Bootstrap Table 还支持多种插件和扩展,如筛选器、排序器、分页控件等,可以根据项目需要进行灵活扩展和定制。 Bootstrap Table 的使用也非常简单。只需要引入相应的 CSS 和 JS 文件,然后在 HTML 中添加表格元素,并通过 JavaScript 初始化和配置表格即可。通过设置相应的属性和方法,可以定制表格的样式、数据源、分页设置等。此外,还可以通过 Bootstrap Table 提供的 API 方法来动态地操作和修改表格的内容和样式。 总的来说,Bootstrap Table 是一款简单易用的表格插件,适用于各种项目的数据展示和管理需求。它具有丰富的功能和扩展性,能够提供灵活定制的数据表格,使网页的数据展示更加美观和易用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值