vxe-table——实现切换页码时排序状态的回显问题(ant-design+elementUi中table排序不同时回显的bug)——js技能提升

之前写的后台管理系统,都是用的antd+elementtable组件中的【排序】问题是有一定的缺陷的。

想要实现的效果:

antv------table组件一次只支持一个参数的排序

如下图:

就算是可以自行将排序字段拼接到列表接口的入参中,页面中字段的排序也是只有一个的。不会同时显示排序的状态。比如像下面的

element------table组件一次只支持一个参数的排序

就连【default-sort】默认的排序参数,都只是一个对象,而非是一个数组。

没有办法实现我们想要的多个参数同时排序并且回显的效果。

前几天写的文章中的vxe-table组件可以实现这样的效果。

vxe-table组件实现多个参数同时排序的效果

感觉官网上有一部分内容还是不太好看的,只有真正用到了,才能明白其中的含义。

js 复制代码
 <vxe-table
          size="small"
          border
          resizable
          ref="xTable1"
          id="toolbar_demo5"
          :custom-config="customConfig"
          show-overflow="tooltip"
          :sort-config="sortConfig"
          :row-config="rowConfig"
          :checkbox-config="checkboxConfig"
          :data="dataSource"
          :loading="loading"
          @checkbox-change="wipCheckboxChange"
          @checkbox-all="wipCheckboxAll"
          @sort-change="wipSortChange"
        >
        ....
       </vxe-table>

关于排序,这里面要用到的参数有:sortConfig sort-change

步骤1:sortConfig参数需要一开始mounted函数中就指定要排序的字段及方向

比如:我这边的要求是:将排序的内容缓存到本地,然后一进到这个页面就要显示上一次排序的效果。本次更改排序后再次缓存,一次循环。

所以在页面一开始mounted时,我就要取缓存的内容,并处理后放置到sortConfig

js 复制代码
mounted(){
	let sort = localStorage.getItem('sort_arr');
    if (sort != undefined) {
      this.sort_arr = JSON.parse(sort);
      this.queryFrom.OrderBy = JSON.parse(sort).toString();
    }
    let sort_obj = JSON.parse(localStorage.getItem('sort_arr'));
    let defaultSort = [];
    if (sort_obj && sort_obj.length > 0) {
      sort_obj.forEach((item) => {
        let arr = item.split(' ');
        defaultSort.push({ field: arr[0], order: arr[1] });
      });
      this.sortConfig.defaultSort = defaultSort;
    }
}

步骤2:监听排序方法sort-change

js 复制代码
 // 排序
wipSortChange({ column, field, order, sortBy, sortList }) {
  console.log(column, field, order, sortBy, sortList);
  if (sortList.length != 0) {
    let arr = sortList.map((v) => {
      return v.field + ' ' + v.order;
    });
    localStorage.setItem('sort_arr', JSON.stringify(arr));
  }
  let sort = localStorage.getItem('sort_arr');
  if (sort != undefined) {
    this.queryFrom.OrderBy = JSON.parse(sort).toString();
  }
  this.card_list_api();//这个是请求列表数据的接口
},

完成!!!

我看之前同事写的的代码:在切换分页的时候用到了this.$refs.xTable1.clearAll(),这个方法直接将排序的结果都清除了。这样是不对的。

页面选中的值,切换页码的时候没有回显的问题

可以在切换页码的时候,通过下面的代码来实现选中的回显:

js 复制代码
if (this.selectedRows) {
  this.selectedRows.forEach((v) => {
    this.$refs.xTable1.setCheckboxRow(v, true);
  });
}
相关推荐
breeze jiang39 分钟前
Next.js 16 App Router 实战:从 About、Blog 动态路由到全局 404
开发语言·javascript·ecmascript
zh_xuan2 小时前
个人主页左侧菜单支持分组,以及菜单显示和隐藏
前端·javascript·css
Ming_studying2 小时前
HTML + CSS + JavaScript实现可视化JSON工具:格式化、折叠、搜索与错误定位
javascript·css·html·json·数据可视化·web工具
kyriewen12 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
随风丶飘13 小时前
[特殊字符] 告别“update“和“fix bug“——Smart Git Commit LLM 让 AI 帮你写专业的 Git 提交信息
人工智能·git·bug
NeilCarmack16 小时前
Deepseek-harness增加桌面版端序列:第 2 讲 · spawn Electron:当前进程如何“交棒“
前端·javascript·electron
czhc114007566317 小时前
崩溃复查与“回声“bug:异常码判案、漏网之鱼和耳塞开关
bug
এ慕ོ冬℘゜19 小时前
使用 jQuery 动态渲染表格与状态切换
前端·javascript·jquery
智购科技自动售货机厂家20 小时前
2026自动售货机AI视觉识别优化:从YOLOv11n模型量化到RKNN部署的端侧推理工程实践~YH
javascript·人工智能·yolo·机器学习·计算机视觉·目标跟踪·perl