对Bootstrap Table 表格进行封装

摘要:
(function){varBSTable=函数(bstableId,url,columns,queryParamsType,countSize){this.btInstance=null;//this.bstableId=bstableId;this.url=url;this.method=“post”;this.paginati
(function () {
    var BSTable = function (bstableId, url, columns,queryParamsType,countSize) {
        this.btInstance = null;					//jquery和BootStrapTable绑定的对象
        this.bstableId = bstableId;
        this.url =  url;
        this.method = "post";
        this.paginationType = "server";			//默认分页方式是服务器分页,可选项"client"   如果 设置 sidePagination: "server", 必须包含 total 和 rows;  如果直接返回的是数组 需要设置为 sidePagination: "client"
        this.toolbarId = bstableId + "Toolbar";
        this.columns = columns;
        this.height = 665;						
        this.data = {};
        this.queryParams = {}; // 向后台传递的自定义参数
        if (countSize==undefined){
            this.countSize=10;
        }else{
            this.countSize=countSize;
        }
        if(queryParamsType==undefined){
            this.queryParamsType='limit'
        }else{
            this.queryParamsType=queryParamsType
        }
    };

    BSTable.prototype = {
        /**
         * 初始化bootstrap table
         */
        init: function () {
            var tableId = this.bstableId;
            var me = this;
            this.btInstance =
                $('#' + tableId).bootstrapTable({
                    contentType: "application/x-www-form-urlencoded",
                    url: this.url,				//请求地址
                    method: this.method,		//ajax方式,post还是get
                    ajaxOptions: {				//ajax请求的附带参数
                        data: this.data
                    },
                    toolbar: "#" + this.toolbarId,//顶部工具条
                    striped: true,     			//是否显示行间隔色
                    cache: false,      			//是否使用缓存,默认为true
                    pagination: true,     		//是否显示分页(*)
                    sortable: true,      		//是否启用排序
                    // sortOrder: "desc",     		//排序方式
                    pageNumber: 1,      			//初始化加载第一页,默认第一页
                    pageSize: this.countSize,      			//每页的记录行数(*)
                    pageList: [10, 20, 50,100],  	//可供选择的每页的行数(*)
                    queryParamsType: this.queryParamsType, 	//默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort
                    queryParams: function (param) {
                        if(this.queryParamsType=='limit'){
                            return $.extend(me.queryParams, param);
                        }else{
                            //因为layui table 传参不一样
                            return $.extend(me.queryParams, {
                                'page':param.pageNumber,
                                'limit':param.pageSize
                            });
                        }

                    }, // 向后台传递的自定义参数
                    sidePagination: this.paginationType,   //分页方式:client客户端分页,server服务端分页(*)
                    search: false,      		//是否显示表格搜索,此搜索是客户端搜索,不会进服务端
                    strictSearch: true,			//设置为 true启用 全匹配搜索,否则为模糊搜索
                    showColumns: true,     		//是否显示所有的列
                    showRefresh: true,     		//是否显示刷新按钮
                    minimumCountColumns: 2,    	//最少允许的列数
                    clickToSelect: true,    	//是否启用点击选中行
                    searchOnEnterKey: true,		//设置为 true时,按回车触发搜索方法,否则自动触发搜索方法
                    columns: this.columns,		//列数组
                    // height: this.height,
                    icons: {
                        refresh: 'glyphicon-repeat',
                        toggle: 'glyphicon-list-alt',
                        columns: 'glyphicon-list'
                    },
                    iconSize: 'outline'
                });
            return this;
        },
        /**
         * 向后台传递的自定义参数
         * @param param
         */
        setQueryParams: function (param) {
            this.queryParams = param;
        },
        /**
         * 设置分页方式:server 或者 client
         */
        setPaginationType: function (type) {
            console.log(type)
            this.paginationType = type;
        },
        setHeight: function (type) {
            this.height = type;
        },

        /**
         * 设置ajax post请求时候附带的参数
         */
        set: function (key, value) {
            if (typeof key == "object") {
                for (var i in key) {
                    if (typeof i == "function")
                        continue;
                    this.data[i] = key[i];
                }
            } else {
                this.data[key] = (typeof value == "undefined") ? $("#" + key).val() : value;
            }
            return this;
        },

        /**
         * 设置ajax post请求时候附带的参数
         */
        setData: function (data) {
            this.data = data;
            return this;
        },

        /**
         * 清空ajax post请求参数
         */
        clear: function () {
            this.data = {};
            return this;
        },

        /**
         * 刷新 bootstrap 表格
         * Refresh the remote server data,
         * you can set {silent: true} to refresh the data silently,
         * and set {url: newUrl} to change the url.
         * To supply query params specific to this request, set {query: {foo: 'bar'}}
         */
        refresh: function (parms) {
            if (typeof parms != "undefined") {
                this.btInstance.bootstrapTable('refresh', parms);
            } else {
                this.btInstance.bootstrapTable('refresh');
            }
        }
    };

    window.BSTable = BSTable;

}());

 1.使用方法 把封装好的js 引入到页面中

var pageObj={
table:null,
id:"exampleTable",//要渲染的table id
url: "", //请求路径
}

/*

*初始化表格的列
* */
pageObj.initColumn = function () {
return[
{
field: 'username',
title: '名字',
align: 'center',
},
    ]
}
//设置传参

pageObj.formParams = function () {

var queryData = {};

queryData['searchWord'] = $("#searchWord").val();
    return queryData;
};
$(function () {
load();
});
//初始化表格
function load() {
var defaultColunms = pageObj.initColumn();
var table = new BSTable(pageObj.id, pageObj.url, defaultColunms);
pageObj.table = table.init();
}
//reLoad 更新表格
function reLoad() {
pageObj.table.refresh({query: pageObj.formParams()});
}
 
 

免责声明:文章转载自《对Bootstrap Table 表格进行封装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Homebrew 安装与配置 || 换源、卸载、常用命令、brew caskSelenium之表格的定位下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决: Table XX.QRTZ_LOCKS doesn`t exist 的问题

本机环境 window10专业版2004WSL2(Ubuntu18.04)下的Docker容器(Mysql5.7.22) 问题描述: Quartz定时任务项目, 数据库从Windows Mysql迁移到Docker Mysql容器后, 启动项目时, 报Table 'xx.QRTZ_LOCKS' doesn't exist错误 问题原因: Linux系统下M...

HTML表格基础详解

       在现在 div 大行其道的时代,table 这个标签似乎很少被人提及,到处都是 div+css 布局的书以及博客文章,但其实 table 以及连带的其他表格标签依然在网页中占很重要的地位,特别是后台展示数据的时候表格运用是否熟练就显得很重要,一个清爽简约的表格能够把繁杂的数据表现得很有条理,虽然 div 布局也可以做到,但是总没有表格来得方便...

SQL 查询所有数据库、表名、表字段总结

SQL Server1、查询所有表    select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2、查询所有数据库    select [name] from [sysdatabases] order by [name]3、查询表中字段     select [nam...

我的MYSQL学习心得(一) 简单语法

我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义...

【HTML5版】导出Table数据并保存为Excel

首发我的博客 http://blog.meathill.com/tech/js/export-table-data-into-a-excel-file.html 最近接到这么个需求,要把<table>显示的数据导出成Excel表。类似的需求并不稀罕,过去我通常用PHP输出.csv文件,不过这次似乎不能这么做:数据源表格允许用户筛选和排序,与原...

LeetCode 36——有效的数独

1. 题目 2. 解答 将数独中数字的 ASCII 码值转化到 0-8 之间作为散列值,建立一个散列表,然后分别逐行、逐列、逐宫(3*3小块)统计每个数字的出现次数,若出现次数大于 1,则数独无效。 class Solution { public: bool isValidSudoku(vector<vector<char>&g...