我需要通过 Flask 网络应用程序将大型数据集提供到网络上的表格中。我正在尝试使用bootstrap-table 扩展实现服务器端分页,但无法使其正常工作。有一些事情我不明白。当表格呈现时,它正确地知道我的表格中的行数,并构建一个适当的页面列表。但是,表中的所有行都会在每一页上呈现。
此外,此表的排序和搜索功能只返回完整的表。bootstrap-table.js 代码似乎具有对服务器端数据进行排序和搜索的功能,但我不确定。
我的引导表代码如下所示
<table class='sastable' id='servertable' data-toggle="table" data-classes='table table-condensed table-bordered'
data-url="/manga/gettable"
data-show-columns='true' data-toolbar='#toolbar' data-id-field='id'
data-pagination="true" data-side-pagination="server"
data-page-list="[10, 20, 50, 100]" data-search="true">
<thead>
<tr id='head'>
<th data-field="state" data-checkbox="true">ID</th>
<th data-field="id" id='id' data-visible='false' data-switchable='false'>ID</th>
{% for column in keys %}
<th id='{{column}}' data-field='{{column}}' data-sortable='true' data-sorter="sort"
data-cell-style="{{'cellStyle' if (column=='plate' or 'status' in column or 'comp' in column) else ''}}"
data-visible="{{'false' if column not in cols else 'true'}}">{{column|upper}}</th>
{% endfor %}
</tr>
</thead>
我的 data-url 属性 '/manga/gettable' 是一个链接,它以这种格式返回 JSON 数据,jsfiddle
在 /manga/gettable 中传递数据的代码是
@tables_page.route('/manga/gettable', methods=['GET','POST'])
@tables_page.route('/gettable', methods=['GET','POST'])
def getTable():
''' Retrieve tables for server-side delivery '''
pl = plateList()
pl.load()
table = pl.plate2d
size = len(table)
data = OrderedDict()
data['total'] = size
data['rows'] = []
cols = table.columns.keys()
for row in table:
data['rows'].append({col:row.data[i] for i,col in enumerate(cols)})
return jsonify(data)
它基本上只是从文件中加载一个表,并将其转换为 JSON 字典类型格式。该表有大约 50 行,并且正确地制作了 5 页,假设默认每页 10 条记录,但实际上每页显示所有 50 行。
一个据称有效的示例,具有正确的分页、排序和搜索,但我不明白它是如何工作的。
我觉得我在这里缺少一些基本的东西。我在这里想念什么?谢谢。