四、bootstrap-Table

一、bootstrap-Table基础表格

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Dashboard | Nadhif - Responsive Admin Template</title>
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
        <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <script src="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table.min.js"></script>
    </head>
    <body>
        <table id="mytab" class="table table-hover"></table>
        <script>
            var data=[{"id":0,"name":"Item 0","price":"$0"},{"id":1,"name":"Item 1","price":"$1"},{"id":2,"name":"Item 2","price":"$2"},{"id":3,"name":"Item 3","price":"$3"},{"id":4,"name":"Item 4","price":"$4"},{"id":5,"name":"Item 5","price":"$5"},{"id":6,"name":"Item 6","price":"$6"},{"id":7,"name":"Item 7","price":"$7"},{"id":8,"name":"Item 8","price":"$8"},{"id":9,"name":"Item 9","price":"$9"},{"id":10,"name":"Item 10","price":"$10"},{"id":11,"name":"Item 11","price":"$11"},{"id":12,"name":"Item 12","price":"$12"},{"id":13,"name":"Item 13","price":"$13"},{"id":14,"name":"Item 14","price":"$14"},{"id":15,"name":"Item 15","price":"$15"},{"id":16,"name":"Item 16","price":"$16"},{"id":17,"name":"Item 17","price":"$17"},{"id":18,"name":"Item 18","price":"$18"},{"id":19,"name":"Item 19","price":"$19"},{"id":20,"name":"Item 20","price":"$20"}];
            $('#mytab').bootstrapTable({
                data:data,
                queryParams: "queryParams",
                toolbar: "#toolbar",
                sidePagination: "true",
                striped: true, // 是否显示行间隔色
                //search : "true",
                uniqueId: "ID",
                pageSize: "5",
                pagination: true, // 是否分页
                sortable: true, // 是否启用排序
                columns: [{
                        field: 'id',
                        title: '登录名'
                    },
                    {
                        field: 'name',
                        title: '昵称'
                    },
                    {
                        field: 'price',
                        title: '角色'
                    },
                    {
                        field: 'price',
                        title: '操作',
                         120,
                        align: 'center',
                        valign: 'middle',
                        formatter: actionFormatter,
                    },
                ]
            });
            //操作栏的格式化
            function actionFormatter(value, row, index) {
                var id = value;
                var result = "";
                result += "<a href='javascript:;' class='btn btn-xs green' onclick="EditViewById('" + id + "', view='view')" title='查看'><span class='glyphicon glyphicon-search'></span></a>";
                result += "<a href='javascript:;' class='btn btn-xs blue' onclick="EditViewById('" + id + "')" title='编辑'><span class='glyphicon glyphicon-pencil'></span></a>";
                result += "<a href='javascript:;' class='btn btn-xs red' onclick="DeleteByIds('" + id + "')" title='删除'><span class='glyphicon glyphicon-remove'></span></a>";
                return result;
            }
        </script>
    </body>
</html>  

BootstrapTable的属性一览表:

    url: '/Home/GetDepartment',         //请求后台的URL(*)
            method: 'get',                      //请求方式(*)
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
            pagination: true,                   //是否显示分页(*)
            sortable: false,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            queryParams: oTableInit.queryParams,//传递参数(*)
            sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)
            pageNumber:1,                       //初始化加载第一页,默认第一页
            pageSize: 10,                       //每页的记录行数(*)
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数(*)
            search: true,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
            strictSearch: true,
            showColumns: true,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            height: 500,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                     //每一行的唯一标识,一般为主键列
            showToggle:true,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            columns: [{
}]

如果我们想要再将这一列显示的时候就要用到:showColumns属性。当showColumns为true的时候,会在表格上方产生一个下拉框,如图所示:

 

 bootstrap-Table列过滤的功能

免去扩展表格搜索框的烦恼具体步骤:

https://www.bootcdn.cn/bootstrap-table/
<script src="https://cdn.bootcss.com/bootstrap-table/1.14.2/extensions/filter-control/bootstrap-table-filter-control.js"></script>

  定义表格属性及表头属性

<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初始化的时候就不用定义列了。

 

二、bootstrap-Table基础表格

@*
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
    ViewData["Title"] = "Index";
    Layout = null;
}
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <meta http-equiv="content-type" content="txt/html; charset=utf-8" />
    <title>Index</title>

    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-table/1.15.4/locale/bootstrap-table-zh-CN.min.js"></script>
    <!---->
    <script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script>
    <!---->
    <script src="https://cdn.bootcss.com/clipboard.js/2.0.4/clipboard.min.js"></script>
    <!---->
    <script src="https://cdn.bootcss.com/moment.js/2.24.0/moment.js"></script>
    <link href="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker-standalone.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-datetimepicker/2.1.30/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>

    <style>
        .table th, .table td {
            text-align: center;
            vertical-align: middle !important;
        }
    </style>
    <script type="text/javascript">
        //
        var UploadPath = "";
        //开始上传
        //设置不可点击
        function AjaxFile(file, i,uuidN) {
            var name = file.name; //文件名
                if ($("#inputFileName").val()) {
                    name = name.split(".");
                    var extension = name[name.length - 1].toString().toUpperCase();
                    name = $("#inputFileName").val()+"." + extension;
                }
                size = file.size, //总大小shardSize = 2 * 1024 * 1024,
                shardSize = 2 * 1024 * 1024,//以2MB为一个分片
                shardCount = Math.ceil(size / shardSize); //总片数
            if (i >= shardCount) {
                return;
            }
            //计算每一片的起始与结束位置
            var start = i * shardSize,
                end = Math.min(size, start + shardSize);
            //构造一个表单,FormData是HTML5新增的
            var form = new FormData();
            form.append("data", file.slice(start, end)); //slice方法用于切出文件的一部分
            @*var uuidN="@ViewBag.uuidN";*@
            form.append("uuidN", uuidN);
            //form.append("lastModified", file.lastModified);
            form.append("fileName", name);
            form.append("total", shardCount); //总片数
            form.append("index", i + 1); //当前是第几片
            UploadPath = file.lastModified
            //Ajax提交文件
            $.ajax({
                url: "/Home/UploadFile",
                type: "POST",
                data: form,
                async: true, //异步
                processData: false, //很重要,告诉jquery不要对form进行处理
                contentType: false, //很重要,指定为false才能形成正确的Content-Types
                success: function (result) {
                    if (result != null) {
                        i = result.number++;
                        var num = Math.ceil(i * 100 / shardCount);
                        $("#output").text(num + '%');
                        AjaxFile(file, i, uuidN);
                        if (result.state) {
                            SearchData();
                            //移除禁用操作
                            $("#inputFileName").attr("disabled", false);
                            $("#file").attr("disabled", false);
                            $("#upfile").attr("disabled", false);
                            //
                            var filepath = $("#path");
                            filepath.after(filepath.clone().val(""));
                            filepath.remove();//清空input file
                            $('#upfile').val('请选择文件');
                            //跳转链接
                            console.log("data.urlInfo:" + result.urlInfo);
                            var domain = window.location.host;
                            var urlPath = "http://" + domain + result.urlInfo;
                            window.open(urlPath);
                        }
                    }
                }
            });
        }
        //
        function InteTable()
        {
            $("#table tbody tr").each(function (i) { //遍历表格tr 行(id=table下的tbody元素的tr行)
                //alert($(this).text());//整行tr值
                //alert($(this).children("td").eq(3).text());
                if ($(this).children("td").eq(3).text() != "压缩完成") {
                    var obj = $(this).children("td").eq(4).children("a").eq(0);
                    obj.css('display','none');
                    //obj.append(" ★");
                    //alert(obj.text());
                }
            });
        }

       //查询事件
       function SearchData() {
           $('#table').bootstrapTable('refresh', { pageNumber: 1 });
           //InteTable();渲染导致重新对表格td里面的a标签设置text属性无效。只有 onLoadSuccess 这个属性
       }

        //分页数据
        $(function () {

             $("#StartCreateTime").datetimepicker({
                format: 'YYYY-MM-DD hh:mm',
                locale: moment.locale('zh-cn'),
            });

            $("#EndCreateTime").datetimepicker({
                format: 'YYYY-MM-DD hh:mm',
                locale: moment.locale('zh-cn'),
            }).on('show', function (ev) {
                var stime = $("#EndCreateTime").val();
            });

            $("#DelEmpty").click(function () {
                $('#StartCreateTime').val("");
                $('#EndCreateTime').val("");
            })

            $("#file").click(function () {
                $("#file").attr("disabled", true);  //按钮禁止点击
                $("#inputFileName").attr("disabled", "disabled");
                $("#upfile").attr("disabled", "disabled");
                var file = $("#path")[0].files[0];
                var guid =  generateUUID();
                AjaxFile(file,0,guid);
            });

            //
            var clipboard = new ClipboardJS('.clipboard');
            clipboard.on('success', function(e) {
                layer.msg("已复制成功" + e.text);
            });
            clipboard.on('error', function (e) {
                layer.open({
                    title: '提示',
                    content: '您的浏览器可能不支持,请手动复制~'
                });
            });
            //查询条件
            var query = {
                Params:function queryParams(params) {
                    return {
                        pageSize: params.pageSize,
                        pageNumber: params.pageNumber,
                        StartCreateTime: $("#StartCreateTime").val(),
                        EndCreateTime: $("#EndCreateTime").val(),
                    };
                }
            }


            $("#table").bootstrapTable({
                url: "/Home/GetSearchData",
                queryParamsType: '',              //默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort
                queryParams: query.Params,
                method: "post",                    //
                pagination: true,
                pageNumber: 1,                      //初始化加载第一页,默认第一页,并记录
                pageSize: 10,                     //初始化默认每页的记录行数(*)
                pageList: [10, 20, 50, 100],
                sidePagination: "server",         //分页方式:client客户端分页,server服务端分页(*)
                striped: true,                    //是否显示行间隔色
                cache: false,
                uniqueId: "Id",               //每一行的唯一标识,一般为主键列
                height:500,
                paginationPreText: "上一页",
                paginationNextText: "下一页",
                columns: [
                    //{ checkbox: true },
                    { title: 'ID', field: 'Id',hidden:true},
                    { title: '序号',  50, align: "center", formatter: function (value, row, index) { return index + 1; } },
                    { title: '文件名', field: 'File_Name' },
                    { title: '文件状态', field: 'File_State' },
                    //{
                    //    title: 'File_UuidN', field: 'File_UuidN',hidden: true, formatter: function (value, row, index) {

                    //        return value;
                    //    }
                    //},
                    {
                        title: '视频路径', field: 'File_Path2', formatter: function (value, row, index) {
                            if (value != "") return "<a class="btn btn-info" href="" + value + ""  target="_blank" >播放视频</a><a style="margin-left:20px;" class="clipboard" href="javascript:;"  data-clipboard-text="http://" + window.location.host + value + ""  rel="noopener">复制链接</a>";
                            else return "";
                        }
                    },
                    { title: '请求时间', field: 'CreateTime' }
                ],onLoadSuccess: function(){  //加载成功时执行
                    //("#theTable th").css("text-align","center");  //设置表头内容居中
                    InteTable();
                },
                onLoadError: function(){  //加载失败时执行
                    alert("加载数据失败");
                }

        });
        });


        //

       function generateUUID() {
            var d = new Date().getTime();
            var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
            var r = (d + Math.random()*16)%16 | 0;
            d = Math.floor(d/16);
            return (c=='x' ? r : (r&0x3|0x8)).toString(16);
            });
            return uuid;
        };

    </script>
</head>
<body>
    <div class="container">
        <div class="form-horizontal" role="form">
            <div class="form-group" style="margin-top:5%;">
                <label for="inputPassword" class="col-sm-2 control-label">上传文件名</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="inputFileName"
                           placeholder="请输入文件名">
                </div>
            </div>
            <div class="form-group">
                <label for="firstname" class="col-sm-2 control-label">文件上传:</label>
                <div class="col-sm-10">
                    <div class="col-lg-4" style="margin:0;padding:0">
                        <input type="text" class="form-control" value="请选择文件" size="20" name="upfile" id="upfile" style="border:1px dotted #ccc">
                    </div>
                    <div class="col-lg-1" style="margin:0;padding:0">
                        <input type="button" class="btn btn-info form-control " value="浏览" onclick="path.click()">
                    </div>
                    <div class="col-lg-1">
                        <input type="file" class="form-control" id="path" style="display:none" multiple="multiple" onchange="upfile.value=this.value">
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-5">
                    <div class="col-lg-2">
                        <span id="output" style="margin-left:50%">0%</span>
                    </div>
                </div>
            </div>

            <div class="form-group">
                <div class="col-sm-offset-2 col-lg-2">

                    <button type="button" id="file" class="form-control btn btn-primary">开始上传</button>

                </div>
                <div class="col-lg-3">
                    <div class="input-group">
                        <label class="input-group-addon">开始时间</label>
                        <input type="text" class="form-control" id="StartCreateTime">
                    </div>
                </div>
                <div class="col-lg-3">
                    <div class="input-group">
                        <label class="input-group-addon">结束时间</label>
                        <input type="text" class="form-control" id="EndCreateTime">
                    </div>
                </div>
                <div class="col-lg-2 col-sm-2">
                    <div class="input-group">
                        <div>
                            <input class="btn btn-primary " type="button" value="查询" onclick="SearchData()">
                            <input class="btn btn-danger " id="DelEmpty" type="button" value="清空">
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="panel-body container-fluid">
            <table id="table"></table>
        </div>
    </div>
</body>
</html>
原文地址:https://www.cnblogs.com/fger/p/10955345.html