bootstrap table server端分页 + 导出【选中】数据并存

bootstrap table server端分页 和 导出【选中】数据不能并存么?
图片描述

首先,使用client分页方式,可以加载数据,可以导出【选中】。
更换为server分页后,数据可以正常加载,但数据导出只能导出当前页所有,不能导出选中。

同时,注意到。在Django-xadmin中,也是只能导出当前页所有的行,没有提供导出选中的行 这个功能。
难道是框架的问题?

阅读 12.7k
4 个回答

看源码就知道,是server端的话,选择导出就有问题。
如果只是导出当前页选择的内容,直接修改bootstrap-table-export.js源码即可
找到selected选择处理逻辑段,原理隐藏未选中的行,调用导出,再显示隐藏行即可。
如果你是翻页选中,只能到后台查询显示到前台,导出再显示原来的数据

var trs = that.$body.children(); 
for (var i = 0; i < trs.length; i++) {
    var $this = $(trs[i]);
    if(!$this.find(sprintf('[name="%s"]',that.options.selectItemName)).prop('checked')){
      $this['hide']();
 }}
doExport();
that.getRowsHidden(true);

方案2:
就是给load(selectedData),中selectedData给赋值一些load里面需要的数据
this.options.totalRows = data.total;
fixedScroll = data.fixedScroll;
data = data[this.options.dataField];

BootstrapTable.prototype.load = function (data) {
        var fixedScroll = false;

        // #431: support pagination
        if (this.options.sidePagination === 'server') {
            //就是修改data中使其满足获取data
            this.options.totalRows = data.total;
            fixedScroll = data.fixedScroll;
            data = data[this.options.dataField];
        } else if (!$.isArray(data)) { // support fixedScroll
            fixedScroll = data.fixedScroll;
            data = data.data;
        }

        this.initData(data);
        this.initSearch();
        this.initPagination();
        this.initBody(fixedScroll);
    };

看来在server端分页下,是无解了,仿照xadmin的方式,在server端实现数据查询,写进csv,通过StreamingHttpResponse返回给前端了。

我的也是在这样,而且前端table有formatter导出的内容就有有误,真正想实现导出还得后台来干

新手上路,请多包涵

好像没什么用,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进