Bootstrap Table的使用小结

1.Jquery中的一些东西学习一下子,补充完善一下,毕竟有些时候没有使用到

这个方式很有用,在使用bootstrap table的时候,选择当前已经选择的节点的事件中的ID的值 
当前rows中有很多的数据,但是我只需要id这一个值,这个时候进行操作就非常的简单了。

$.map(data,function(item,index){return XXX})
使用的总结:
  把一个数组,按照新的方式进行组装返回,和原来的数组不一样。
  遍历data数组中的每个元素,并按照return中的计算方式 形成一个新的元素,放入返回的数组中
  var b = $.map( [55,1,2], function( item,index )
  {
       return {
         "label": item,
          "value": index
         }
   });
   alert(b[0].label +"  "+ b[0].value);
   输出为  55 0   

2.后台呢,我返回的数据和格式不是按照BootStrap中的格式有点差别吧,反正就是不一样

{
    "success": true,
    "message": null,
    "data": {
        "pageSize": 15,
        "rows": [

            {
                "userName": "333",
                "userType": 333,
                "password": "333",
                "id": 11,
                "indexcode": "333"
            },
            {
                "userName": "3",
                "userType": 333,
                "password": "333",
                "id": 5,
                "indexcode": "33333"
            }
            .......
        ],
        "total": 17,
        "totalPage": 2,
        "page": 0,
        "hasPreviousPage": true,
        "hasNextPage": true,
        "lastPage": false,
        "firstPage": false
    }
}

主要是这里我是用了统一的返回接口 ActionResult,这样比较方便书写格式,统一后端

**
 * Created by JetWang on 2016/10/1.
 */
public class ActionResult {

    private boolean success;

    private String message;

    private Object data;

    public ActionResult(){
    }

    public ActionResult(boolean success){
        this(success, null, null);
    }

  ............

}

来看看前端的效果吧

前端的页面

<%@ include file="./common/common.jsp"%> //什么公用的bootstrapt ,JQuery啊之类的引用放进去处理了
<script src="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table.js" type="text/javascript"></script>
<script src="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table-locale-all.js" type="text/javascript">
</script>
<link rel="stylesheet" href="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table.css" type="text/css">
//这里就是容器中放置table的
<div class="container">
  <table id="table"
         data-url="/cms/UserInfo/userInfoPage">//使用的路径,后台请求的URL
  </table>
</div>

比较重要的JS代码的说明

jQuery(document).ready(function() {
  //这里你可以使用各种法师,也可以使用seajs前端模块化工具
  下面放置我们的js代码就好了
});

下面的配置文件和一些事件的重写呢,你可以查看文档,或者自己去看看你源码 
这里你可以进行重写哦~~ ,extentd进行重新的覆盖!

BootstrapTable.DEFAULTS = {
        classes: ‘table table-hover‘,
        locale: undefined,
        height: undefined,
        undefinedText: ‘-‘,
        sortName: undefined,
        sortOrder: ‘asc‘,
        sortStable: false,
        striped: false,
        columns: [[]],
        data: [],
        dataField: ‘rows‘,
        method: ‘get‘,
        url: undefined,
        ajax: undefined,
        cache: true,
        contentType: ‘application/json;charset=UTF-8‘,//这里我就加了个utf-8
        dataType: ‘json‘,
        ajaxOptions: {},
        queryParams: function (params) {//这个是设置查询时候的参数,我直接在源码中修改过,不喜欢offetset 我后台用的                    是pageNo. 这样处理就比较的满足我的要求,其实也可以在后台改,麻烦!
            return params;
        },
        queryParamsType: ‘limit‘, // undefined (这里是根据不同的参数,选择不同的查询的条件)
        responseHandler: function (res) {//这里我查看源码的,在ajax请求成功后,发放数据之前可以对返回的数据进行处理,返回什么部分的数据,比如我的就需要进行整改的!
            return res;
        },
        pagination: false,
        onlyInfoPagination: false,
        sidePagination: ‘client‘, // client or server
        totalRows: 0, // server side need to set
        pageNumber: 1,
        pageSize: 10,
        pageList: [10, 25, 50, 100],
        paginationHAlign: ‘right‘, //right, left
        paginationVAlign: ‘bottom‘, //bottom, top, both
        paginationDetailHAlign: ‘left‘, //right, left
        paginationPreText: ‘&lsaquo;‘,
        paginationNextText: ‘&rsaquo;‘,
        search: false,
        searchOnEnterKey: false,
        strictSearch: false,
        searchAlign: ‘right‘,
        selectItemName: ‘btSelectItem‘,
        showHeader: true,
        showFooter: false,
        showColumns: false,
        showPaginationSwitch: false,//展示页数的选择?
        showRefresh: false,
        showToggle: false,
        buttonsAlign: ‘right‘,
        smartDisplay: true,
        escape: false,
        minimumCountColumns: 1,
        idField: undefined,
        uniqueId: undefined,
        cardView: false,
        detailView: false,
        detailFormatter: function (index, row) {
            return ‘‘;
        },
        trimOnSearch: true,
        clickToSelect: false,
        singleSelect: false,
        toolbar: undefined,
        toolbarAlign: ‘left‘,
        checkboxHeader: true,
        sortable: true,
        silentSort: true,
        maintainSelected: false,
        searchTimeOut: 500,
        searchText: ‘‘,
        iconSize: undefined,
        buttonsClass: ‘default‘,
        iconsPrefix: ‘glyphicon‘, // glyphicon of fa (font awesome)
        icons: {
            paginationSwitchDown: ‘glyphicon-collapse-down icon-chevron-down‘,
            paginationSwitchUp: ‘glyphicon-collapse-up icon-chevron-up‘,
            refresh: ‘glyphicon-refresh icon-refresh‘,
            toggle: ‘glyphicon-list-alt icon-list-alt‘,
            columns: ‘glyphicon-th icon-th‘,
            detailOpen: ‘glyphicon-plus icon-plus‘,
            detailClose: ‘glyphicon-minus icon-minus‘
        },

        customSearch: $.noop,

        customSort: $.noop,

        rowStyle: function (row, index) {
            return {};
        },

        rowAttributes: function (row, index) {
            return {};
        },

        footerStyle: function (row, index) {
            return {};
        },

        onAll: function (name, args) {
            return false;
        },
        onClickCell: function (field, value, row, $element) {
            return false;
        },
        onDblClickCell: function (field, value, row, $element) {
            return false;
        },
        onClickRow: function (item, $element) {
            return false;
        },
        onDblClickRow: function (item, $element) {
            return false;
        },
        onSort: function (name, order) {
            return false;
        },
        onCheck: function (row) {
            return false;
        },
        onUncheck: function (row) {
            return false;
        },
        onCheckAll: function (rows) {
            return false;
        },
        onUncheckAll: function (rows) {
            return false;
        },
        onCheckSome: function (rows) {
            return false;
        },
        onUncheckSome: function (rows) {
            return false;
        },
        onLoadSuccess: function (data) {
            return false;
        },
        onLoadError: function (status) {
            return false;
        },
        onColumnSwitch: function (field, checked) {
            return false;
        },
        onPageChange: function (number, size) {
            return false;
        },
        onSearch: function (text) {
            return false;
        },
        onToggle: function (cardView) {
            return false;
        },
        onPreBody: function (data) {
            return false;
        },
        onPostBody: function () {
            return false;
        },
        onPostHeader: function () {
            return false;
        },
        onExpandRow: function (index, row, $detail) {
            return false;
        },
        onCollapseRow: function (index, row) {
            return false;
        },
        onRefreshOptions: function (options) {
            return false;
        },
        onRefresh: function (params) {
          return false;
        },
        onResetView: function () {
            return false;
        }
    };
function initTable() {
      $table.bootstrapTable({
        striped: true,  //表格显示条纹
        pagination: true, //启动分页
        pageSize: 15,  //每页显示的记录数
        pageNumber:1, //当前第几页
        pageList: [10, 15, 20, 25],  //记录数可选列表
        search: false,  //是否启用查询
        showColumns: true,  //显示下拉框勾选要显示的列
        showRefresh: true,  //显示刷新按钮
        sidePagination: "server", //表示服务端请求
        //设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
        //设置为limit可以获取limit, offset, search, sort, order
        responseHandler:function(res){
          //远程数据加载之前,处理程序响应数据格式,对象包含的参数: 我们可以对返回的数据格式进行处理
          //在ajax后我们可以在这里进行一些事件的处理
          return res.data;
        },
        queryParamsType : "undefined",
        queryParams: function queryParams(params) {   //设置查询参数
          var param = {
            //这里是在ajax发送请求的时候设置一些参数 params有什么东西,自己看看源码就知道了
            pageNo: params.pageNumber,
            pageSize: params.pageSize
          };
          return param;
        },
        onLoadSuccess: function(data){  //加载成功时执行
          alert("加载成功"+data);
        },
        onLoadError: function(){  //加载失败时执行
          layer.msg("加载数据失败", {time : 1500, icon : 2});
        },
        height: getHeight(),
        columns: [
          {
            field: ‘state‘,
            checkbox: true,
            align: ‘center‘,
            valign: ‘middle‘
          }, {
            title: ‘ID‘,
            field: ‘id‘,
            align: ‘center‘,
            valign: ‘middle‘
          },
          {
            field: ‘userName‘,
            title: ‘UserName‘,
            sortable: true,
            footerFormatter: totalNameFormatter,
            align: ‘center‘
          }, {
            field: ‘userType‘,
            title: ‘UserType‘,
            sortable: true,
            align: ‘center‘
          },
          {
            field: ‘password‘,
            title: ‘UserPass‘,
            sortable: true,
            align: ‘center‘
          },{
            field: ‘indexcode‘,
            title: ‘Indexcode‘,
            sortable: true,
            align: ‘center‘
          },{
            field: ‘operate‘,
            title: ‘Item Operate‘,
            align: ‘center‘,
            events: operateEvents,
            formatter: operateFormatter
          }
        ]
      });

上面的 footerFormatter 和 formatter 都是对于当前列的显示进行处理的事件,文档中如下 
formatter: 
The context (this) is the column Object. The cell formatter function, take three parameters: value: the field value. row: the row record data. index: the row index. 
footerFormatter : 
The context (this) is the column Object. The function, take one parameter: 
data: Array of all the data rows. the function should return a string with the text to show in the footer cell. 
都是对于当前列进行处理显示

如下就是增加了两个按钮在一个单元格中

function operateFormatter(value, row, index) {
      return [
        ‘<a class="like" href="javascript:void(0)" title="Like">‘,
        ‘<i class="glyphicon glyphicon-heart"></i>‘,
        ‘</a>  ‘,
        ‘<a class="remove" href="javascript:void(0)" title="Remove">‘,
        ‘<i class="glyphicon glyphicon-remove"></i>‘,
        ‘</a>‘
      ].join(‘‘);
   

也可以在这里就增加事件的处理

<%--{
                      title: ‘操作‘,
                      field: ‘id‘,
                      align: ‘center‘,
                      formatter:function(value,row,index){
                       var e = ‘<a href="#" mce_href="#" onclick="edit(\‘‘+ row.id + ‘\‘)">编辑</a> ‘;
                       var d = ‘<a href="#" mce_href="#" onclick="del(\‘‘+ row.id +‘\‘)">删除</a> ‘;
                        return e+d;
                      也可以这样处理事件的
    }
  }--%

官方中文档说的处理事件可以像下面这里处理

The cell events listener when you use formatter function, take four parameters: event: the jQuery event. value: the field value. row: the row record data. index: the row index. 
Example code:

{
            field: ‘operate‘,
            title: ‘Item Operate‘,
            align: ‘center‘,
            events: operateEvents,
            formatter: operateFormatter
          }
           function operateFormatter(value, row, index) {
          return [
            ‘<a class="like" href="javascript:void(0)" title="Like">‘,
            ‘<i class="glyphicon glyphicon-heart"></i>‘,
            ‘</a>  ‘,
            ‘<a class="remove" href="javascript:void(0)" title="Remove">‘,
            ‘<i class="glyphicon glyphicon-remove"></i>‘,
            ‘</a>‘
          ].join(‘‘);
        }
     window.operateEvents = {
      ‘click .like‘: function (e, value, row, index) {
        alert(‘You click like action, row: ‘ + JSON.stringify(row));
      },
      ‘click .remove‘: function (e, value, row, index) {
        $table.bootstrapTable(‘remove‘, {
          field: ‘id‘,
          values: [row.id]
        });
      }
    };

处理系统中存在的事件的处理,文档中有说

$(‘#table‘).bootstrapTable({
    onEventName: function (arg1, arg2, ...) {
        // ...
    }
});

$(‘#table‘).on(‘event-name.bs.table‘, function (e, arg1, arg2, ...) {
    // ...
});
这个名字文档中很多!
onAll   all.bs.table
                        name, args
                        Fires when all events trigger, the parameters contain:
                        name: the event name,
                        args: the event data.
  1. 处理一些方法,比如当前选择了多少行,全选等等
  2. The calling method syntax: $(‘#table‘).bootstrapTable(‘method‘, parameter);
    
    1 当前选择选的框框的id
    getSelections   none    Return selected rows, when no record selected, an empty array will return.
    
    2.全选
    getAllSelections    none    Return all selected rows contain search or filter, when no record selected, an empty array will return.
     $table.on(‘all.bs.table‘, function (e, name, args) {
                console.log(name, args);
            });
    3.删除 前台的数据,不需要从后台重新加载
    remove  params  Remove data from table, the params contains two properties:
    field: the field name of remove rows.
    values: the array of values for rows which should be removed.
    .....很多很多的东西!

    一个删除的按钮,删除所有的选择的事件!是不是很好呢!

  3. function getIdSelections() {
            return $.map($table.bootstrapTable(‘getSelections‘), function (row) {
                return row.id
            });
       }
       $remove.click(function () {
                var ids = getIdSelections();
                $table.bootstrapTable(‘remove‘, {
                    field: ‘id‘,
                    values: ids
                });
                $remove.prop(‘disabled‘, true);
            });
时间: 2024-12-07 23:54:31

Bootstrap Table的使用小结的相关文章

关于Bootstrap table的回调onLoadSuccess()和onPostBody()使用小结

关于Bootstrap table的回调onLoadSuccess()和onPostBody()使用小结 Bootstrap table 是一款基于 Bootstrap 的 jQuery 表格插件, 简单易用, 且功能强大.越来越多的企业级项目开发中会用到, 关于BT的基本使用本文不作赘述,有需要的可以查阅官方文档. 在使用过程中,可能需要对BT查询返回的数据做操作,比如计算某一列的和,或者填充某行某个字段值,那么就需要用到回调. Bootstarp Table提供了丰富的Events和Mebt

ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十二节--小结,Bootstrap Table之角色管理

返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 很多人说ABP不适合高并发大型,有一定的道理,但是我觉得还是可以的,就看架构师的能力了,我之前公司就是ABP绝对百万数据级项目,是一个在线教育网站,涉及到平台,学院,院系,班级,课程,学生等,一个平台多少大学,一个大学多少院系,一个院系多少班级多少课程,其负责程度一点都不简单,不说了,那是大神,比我在园子看到绝对大多数架构师都强悍.是我等仰望都对象.但是这不是停下脚步仰望的理由,只会是我们追求更强的脚步. 软件

JS表格组件神器bootstrap table详解(基础版)

这篇文章主要介绍了JS表格组件神器bootstrap table,bootstrap table界面采用扁平化的风格,用户体验比较好,更好兼容各种客户端,需要了解更多bootstrap table的朋友可以参考下 一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来.由于Bootstrap Table是Bootstrap的一个组件,所以它是依赖Bootstrap的,我们首先需要添加Bootstrap的引用.

bootstrap table 服务器端分页--ashx+ajax

1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <link rel="

Bootstrap Table Fixed Columns

最近在使用BootStrap 做项目前端,自然也用到了  Bootstrap Table. 推荐大家多去这个http://bootstrap-table.wenzhixin.net.cn/zh-cn/  网站看看,上面有很详细的介绍以及其他扩展功能 下面写下 Fixed Columns(固定列)的使用方法.附件下载地址:http://pan.baidu.com/s/1kUEQTPt 1.引用css文件,js文件(注意引用顺序) <link rel="stylesheet" hre

html5 jquery bootstrap table 直接使用

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta name="viewport" content="width=device-w

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

前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能覆盖似乎不太现实,博主挑选了一些自认为比较常用的功能在此分享给各位园友.源码也在这篇统一给出.好了,不多说废话,开始我们的干货之旅吧. bootstrap table系列: JS组件系列——表格组件神器:bootstrap table JS组件系列——表格组件神器:bootstrap table(二

Bootstrap table

Bootstrap table: <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="dist/css/bootstrap.css"> </head> <

新的表格展示利器 Bootstrap Table Ⅱ

    上一篇文章介绍了Bootstrap Table的基本知识点和应用,本文针对上一篇文章中未解决的文件导出问题进行分析,同时介绍BootStrap Table的扩展功能,当行表格数据修改. 1.Bootstrap Bable 全部数据导出分析 在表格导出数据中,发现设置了分页参数,导出的数据仅为表格加载的分页参数数据,于是,针对这样的情况,通过设置分页参数的值,使表格可以加载更多的数据,可达到导出所有数据的功能需求.然而,在实际的实验中,发现此方案存在以下问题: 表格一次加载一千条数据时,网