bootstrapTable使用refreshOptions后列排列被重置

bootstrapTable使用refreshOptions后,表格的列排列被重置为默认值,而不是保留使用refreshOptions前的表格排序。排序使用的就是bootstraptable的sortable,而使用排序的一个选择栏【用于导出的】,看源代码好像是这个方法是表格给重建了。

改源代码,新增一个设置导出数据类型的方法,找到js/bootstrap-table.js,编辑器打开
3228行增加 var METHODS = ['setExportDataType',如下图

img


然后搜索 "getOptions",大概是6410行,再对象里面添加下面的代码扩展setExportDataType方法

{
            key: "setExportDataType",
            value: function setExportDataType(value) {
                this.options.exportDataType = value;
            }
        }

img


然后更改导出的代码用下面的,不用refreshOptions


        $("#sel_exportoption").change(function () {
            $("#bootStrapTable").bootstrapTable('setExportDataType',$(this).val())
            return;
            $('#bootStrapTable').bootstrapTable('refreshOptions', { exportDataType: $(this).val() });
        })

在使用 refreshOptions 方法刷新 bootstrapTable 选项后,表格的列排列被重置为默认值的问题,可能是由于 refreshOptions 方法会重新渲染表格导致的。因此,可以尝试在调用 refreshOptions 方法之前先保存当前的排序状态,并在重新渲染表格后恢复排序状态,代码示例如下:

// 保存当前的排序状态
var sortName = $('#table').bootstrapTable('getOptions').sortName;
var sortOrder = $('#table').bootstrapTable('getOptions').sortOrder;

// 刷新选项
$('#table').bootstrapTable('refreshOptions', {
    // ... 新选项 ...
});

// 恢复排序状态
$('#table').bootstrapTable('refreshOptions', {
    sortName: sortName,
    sortOrder: sortOrder
});

另外,可能需要注意的是,如果表格的列排列已经被重置为默认值,那么恢复排序状态后也不一定能保证按照原来的顺序进行排序。因此,最好在初始化表格时就设置好需要的排序状态,避免后续出现列排列被重置的情况。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632