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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性