app.py

from flask import Flask, flash, redirect, render_template, request, url_for, jsonify
app = Flask(__name__)
app.secret_key = 'random string'

@app.route('/')
@app.route("/index", methods=['GET', 'POST'])
def index():    
    return render_template("index.html", temp=message)

@app.route('/query',methods=['GET','POST'])
def query():
    #print(url_for('hello_world'))
    row=[]
    for i in range(30):
        row.append({'ID':i,'字段一':f'字段{i}','字段二':f'value{i}'})
    result = jsonify(row)
    return result

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8082,debug=True)

 

index.html

bootstrap-3.4.1-dist

bootstrap-table-develop

tableExport.jquery.plugin-master

<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    
    <!-- 样式导入 -->  
    <link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="static/bootstrap-table/1.21.1/bootstrap-table.min.css"> 
    <!-- js导入,注意顺序,先jquery -->
    <script src="static/jquery/jquery-3.6.1.min.js"></script>
    <!-- bootstrap.min.js -->
    <script src="static/bootstrap/js/bootstrap.min.js"></script>
    <!-- bootstrap-table.min.js -->
    <script src="static/bootstrap-table/1.21.1/bootstrap-table.min.js"></script>
    <!-- 引入中文语言包 -->
    <script src="static/bootstrap-table/1.21.1/locale/bootstrap-table-zh-CN.min.js"></script>
    <!-- 引入bootstrap-table-export等 -->
    <script src="static/bootstrap-table/1.21.1/extensions/export/bootstrap-table-export.min.js"></script>    
    <script src="static/bootstrap-table-export/libs/FileSaver/FileSaver.min.js"></script>  
    <script src="static/bootstrap-table-export/libs/js-xlsx/xlsx.core.min.js"></script>  
    <script src="static/bootstrap-table-export/libs/jsPDF/jspdf.umd.min.js"></script>  
    <script src="static/bootstrap-table-export/libs/jsPDF/polyfills.umd.min.js"></script>  
    <script src="static/bootstrap-table-export/libs/html2canvas/html2canvas.min.js"></script>  
    <script src="static/bootstrap-table-export/tableExport.min.js"></script>

    <title>bootstrap-table</title>
</head>

<body>
    <!--
    <div class="form-group">
                <select id="selectExportDataType" class="form-control">
                    <option value="basic">导出当前页</option>
                    <option value="selected">导出所选数据</option>
                    <option value="all">导出所有数据</option>
                </select>
            </div>
    <button type="button" onclick="exportData()" class='btn btn-mini btn-info'>导出</button>
    -->
    <table id="table"></table>
    
    <script type="text/javascript">
        function initTable(exportScope){
            var abc = $('#table');
            abc.bootstrapTable({
                url:'/query',
                uniqueId: "ID",    //每一行的唯一标识,一般为主键列
                sortName:'ID',   
                height: 600,    //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
                dataType:'json',
                method: 'post',    //向服务器请求远程数据的方式,默认为’get’,可选’post’
                toolbar: '#toolbar',              //工具按钮用哪个容器
                locale: "zh-CN",
                buttonsAlign:"right",  //按钮位置

                showExport: true,    //显示导出                
                Icons : 'glyphicon-export',
                exportDataType: 'all',  //选择导出数据的范围,basic:只导出当前页的表格数据;all:导出所有数据;selected:导出选中的数据
                exportTypes: ['excel'],  //['json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'pdf']
                exportOptions: {
                    ignoreColumn: [0,4],  //忽略某一列的索引
                    worksheetName: 'sheet1',  //表格工作区名称
                    fileName: 'bootstrapTable表格数据',//导出文件的名称
                },

                search: true,    //显示表格右上方搜索框
                searchOnEnterKey: true,    //回车开始搜索
                strictSearch: false,    //开启精确搜索
                searchText: "",    //搜索框初始显示的内容,默认空字符串

                striped: true,                      //是否显示行间隔色
                cache: false,                       //默认缓存ajax请求,设为false则禁用缓存
                
                pagination: true,                   //是否显示分页(*)
                sortable: true,                     //是否启用排序
                sortOrder: "asc",                   //排序方式
                sidePagination: "client",           //分页方式:client客户端分页,server服务端分页(*)
                pageNumber: 1,                      //初始化加载第一页,默认第一页,并记录
                pageSize: 10,                     //每页的记录行数(*)
                pageList: [10, 20, 25, 50, 100,],        //可供选择的每页的行数(*)
                paginationPreText: '上一页',
                paginationNextText: '下一页',

                smartDisplay:false,
                showPaginationSwitch:true,
                showColumns: true,                  //是否显示所有的列(选择显示的列)
                showRefresh: true,                  //是否显示刷新按钮
                minimumCountColumns: 2,             //最少允许的列数
                clickToSelect: true,                //是否启用点击选中行
                showToggle: true,                   //是否显示详细视图和列表视图的切换按钮
                cardView: false,                    //默认false,设为true显示card view(卡片视图)
                detailView: false,                  //默认false,设为true显示detail view(细节视图)
                 //得到查询的参数
                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,
                    visible: true  //是否显示复选框 
                    },{
                        field: 'no',
                        title: '序号',
                        align: "center",
                        width: 65,
                        formatter: function (value, row, index) {
                            //获取每页显示的数量
                            var pageSize = abc.bootstrapTable('getOptions').pageSize;
                            //获取当前是第几页
                            var pageNumber = abc.bootstrapTable('getOptions').pageNumber;
                            //返回序号,注意index是从0开始的,所以要加上1
                            return pageSize * (pageNumber - 1) + index + 1;
                        }
                    },{ 
                        field: '字段一',
                        title: '标题一',
                        sortable: true
                    },{
                        field: '字段二',
                        titleTooltip:'这是字段二的提示',
                        halign:'center',  //table header(表头)的对齐方式,有:left(靠左)、right(靠右)、center(居中)
                        title: '标题二',formatter: linkFormatter
                    },{
                        field:'ID',
                        title: '操作',
                        width: 120,
                        align: 'center',
                        valign: 'middle',
                        formatter: actionFormatter
                    },
                ],
                onLoadSuccess: function (data) {
                    console.log(data);
                },
                onLoadError: function () {
                    abc.bootstrapTable('removeAll');
                    showTips("数据加载失败!");
                },
                formatLoadingMessage: function () {
                    return "请稍等,正在加载中...";
                },
                onDblClickRow: function (row, $element) {
                    var id = row.ID;
                    EditViewById(id, 'view');
                },
            });
        }
        //链接字段格式化
        function linkFormatter(value, row, index) {                
            return "<a href='" + value + "' title='单击打开连接' target='_blank'>" + value + "</a>";
        }
        //操作栏的格式化
        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;
        }
        //双击弹出编辑界面
        function onDblClickRow(row, $element) {
            var id = row.ID;
            EditViewById(id, 'view');
        }
        //实现删除数据的方法
        function Delete() {
            var ids = "";//得到用户选择的数据的ID
            var rows = $('#table').bootstrapTable('getSelections');
            for (var i = 0; i < rows.length; i++) {
              ids += rows[i].ID + ',';
            }
            ids = ids.substring(0, ids.length - 1);
            DeleteByIds(ids);
        }
        // 自定义按钮导出数据
        function exportData(){
            //选择导出的数据类型
            var dataType = $('#selectExportDataType').val();
            initTable(dataType);
            // debugger;
            $('#table').tableExport({
                type: 'excel',
            //     // One of 'head', 'data', 'all'
                jsonScope: 'all',
            //     //忽略某一列的索引
                ignoreColumn: [0,11],
            //     //表格工作区名称
                worksheetName: 'sheet1',
            //     //下载文件名称
                fileName: '自定义导出数据',
            //     //处理导出内容,自定义某一行、某一列、某个单元格的内容
                onCellHtmlData: function (cell, row, col, data){
                    // console.info(data);
                    return data;
                },
            });
        }
        $(function (){
            //调用函数,初始化表格
            initTable('all');
        });

    </script>
</body>
</html>

 

原文地址:http://www.cnblogs.com/rank/p/16805227.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性