bootStrap 表格刷新后,保持复选框勾选状态

bootStrap 表格刷新后,保持复选框勾选状态

项目前端用的bootStrap封装的框架。现有需求对表格中一列进行动态的进度条展示,需要用到表格列的数据。实现:给表格新增一列,并添加了定时刷新,进度条有了:
1.表格定时刷新

 <div class="col-sm-12 select-table table-striped table-responsive" style="overflow: scroll">
 <!-- data-auto-refresh设置true为启用自动刷新插件 
			         data-auto-refresh-interval为每次自动刷新发生的时间(以秒为单位)默认60。
				     data-auto-refresh-silent设置为true可以自动无提示刷新。默认: true
				     data-auto-refresh-status 设置true为启用自动刷新。这是表加载时自动刷新的状态。单击按钮切换此属性。这只是自动刷新的默认状态,因为用户始终可以通过单击按钮来更改它。 默认: true  -->
    <table id="bootstrap-table" data-auto-refresh="true" data-auto-refresh-interval="5" style="min-width: 1500px" class="table text-nowrap" ></table>
 </div>

2.进度条

 {
                    title: '摇摆进度',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var endDate  = new Date();
                        // 摇摆开始时间或再次摇摆开始时间
                        var begin = row.swingEndTime == null ? row.swingStartTime : row.swingStartAlignTime;
                        var res = 0;
                        if (begin != null){
                            var beginDate = new Date(begin);
                            // 当前时间 - 摇摆开始时间
                            var diff = (endDate.getTime() - beginDate.getTime())/1000;
                            // 配方最低摇摆时间 单位分钟
                            var qualified = row.minimumSwingTime;
                            if(qualified==0){
                                res=100;
                            }else{
                                res = 100 * (diff / (qualified * 60));
                            }

                        }
                        if (row.swingEndAlignTime != null){
                            res = 0;
                        }
						// 返回进度条样式
                        return ["<div style='height: 20px;overflow: hidden;background-color: #ed5565;border-radius: 4px;'> <div class='progress-bar' role='progressbar' aria-valuenow='50' aria-valuemin='0' aria-valuemax='100' style='width:"+res.toFixed(2)+"%'>"+res.toFixed(2)+"%</div> </div>"];
                    }
                },

但是刷新表格后发现,之前勾选的记录被刷新没了。后来利用框架的一些方法,结合localStorage解决了问题。
1).给表格添加单击,取消,全选,全选取消事件

$(function () {
        var options = {
            url: prefix + "/listOne",
            createUrl: prefix + "/add",
            updateUrl: prefix + "/edit/{id}",
            removeUrl: prefix + "/remove",
            exportUrl: prefix + "/export",
            showSearch: false,
            showRefresh: true,
            showToggle: false,
            showColumns: false,
            modalName: "摇摆列",
            clickToSelect:true,
            onCheck:onCheck,
            onUncheck:onUncheck,
            onCheckAll:onCheckAll,
            onUncheckAll:onUncheckAll,

2).当触发事件时,把选中的某列唯一值储存到localStorage

 // 供刷新保持选中用
    function onCheck(row, $element){
        window.localStorage.setItem(row.bottleLabel, row.bottleLabel);
    }

    function onUncheck(row, $element){
        window.localStorage.removeItem(row.bottleLabel);
    }
    // 全选和取消全选 处理勾选状态
    function onCheckAll(rowsAfter,rowsBefore){
        for (let rowsAfterElement of rowsAfter) {
            window.localStorage.setItem(rowsAfterElement.bottleLabel, rowsAfterElement.bottleLabel);
        }
    }
    function onUncheckAll(rowsAfter,rowsBefore){
        for (let rowsAfterElement of rowsBefore) {
            console.log(rowsAfterElement.bottleLabel);
            window.localStorage.removeItem(rowsAfterElement.bottleLabel);
        }
    }

3).当渲染表格时,从localStorage取值,处理一下checkbox

 columns: [{
                checkbox: true,
                formatter: function (value, row, index) {
                    // 刷新保持勾选框选中
                    var data = window.localStorage.getItem(row.bottleLabel);
                    if (data !== null) {
                        //console.log(data)
                        return { checked : true}
                    }else {
                        return { checked : false}
                    }
                }
            },
                {
                    field: 'bottleLabel',
                    title: 'xxxxx'
                },

只是一种解决方案,问题算是解决了。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Bootstrap-Table中,可以使用sortName和sortOrder属性来实现表格的排序功能。当sortName属性设置为"sort",sortOrder属性设置为"desc"时,会生成一个order by子句,按照sort字段降序排列。例如,当使用以下代码初始化表格时: ``` $(function() { var options = { url: prefix + "/list", sortName: "sort", sortOrder: "desc", }; $.table.init(options); }); ``` 生成的sql语句为: ``` SELECT * FROM xxx order by sort desc LIMIT ? ``` 如果需要多个字段排序,可以在sortName属性中使用逗号分隔多个字段,并在sortOrder属性中留空。例如: ``` $(function() { var options = { url: prefix + "/list", sortName: "sort desc,id asc", sortOrder: "", }; $.table.init(options); }); ``` 生成的sql语句为: ``` SELECT * FROM xxx order by sort desc,id asc LIMIT ? ``` 需要注意的是,sortName属性中的字段名会被转换为下划线命名格式(驼峰命名转下划线),例如orderNum会被转换为order_num。所以在sortName属性中应该使用转换后的字段名。参考\[2\] #### 引用[.reference_title] - *1* *2* *3* [【若依(ruoyi)】Bootstrap-Table表格排序](https://blog.csdn.net/sayyy/article/details/122616970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值