当前位置: 首页 > news >正文

vxe-table 实现列个性化自定义列功能,自动记忆用户的操作列状态,完整的详细教程

vxe-table 实现列个性化自定义列功能,自动记忆用户的操作列状态,完整的详细教程
在开发 ERP 系统或后台管理系统时,经常需要用到的记忆列状态的功能,就是不同用户根据不同的列表页面,比如将用户主动将常用的列显示出来和不常用的列隐藏,列冻结状态等,刷新页面或者下次进入页面后自动回复成上次操作的列状态,这个功能就非常有用了。

官网文档:https://vxetable.cn

启用功能

通过设置 toolbar-config.custom 启用列个性化设置功能,支持工具栏模式、弹出窗口模式、抽屉模式显示个性化列操作面板,非常灵活的设置项。通过给表格设置 id 属性,确保每个表格的 id 必须是唯一的,记忆状态是根据 id 进行数据缓存的,如果不同表格 id 出现重复,就会导致不同表格的状态数据混乱。

工具栏模式
**加粗样式**
弹出窗口模式
在这里插入图片描述
抽屉模式
在这里插入图片描述

列宽状态记忆

通过 custom-config.allowResizable 启用,启用后用户可以通过拖拽列宽自定义每一列的宽度,非常灵活

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage1',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: false,allowFixed: false,allowResizable: true,allowSort: false,allowGroup: false,allowValues: false,storeOptions: {visible: false, // 保存列可视状态resizable: true, // 保存列宽调整状态sort: false, // 保存列顺序状态fixed: false, // 保存列冻结状态aggGroup: false, // 保存列的行分组状态aggFunc: false// 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: 'Name' },{ field: 'role', title: 'role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age' },{ field: 'address', title: 'address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }]
})
</script>

列显示/隐藏状态记忆

通过 custom-config.allowVisible 启用,启用后用户手动切换每一列的显示与隐藏,非常方便对常用列显示出来,不常用的列可以直接隐藏掉

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage2',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: true,allowFixed: false,allowResizable: false,allowSort: false,allowGroup: false,allowValues: false,storeOptions: {visible: true, // 保存列可视状态resizable: false, // 保存列宽调整状态sort: false, // 保存列顺序状态fixed: false, // 保存列冻结状态aggGroup: false, // 保存列的行分组状态aggFunc: false// 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: 'Name' },{ field: 'role', title: 'role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age' },{ field: 'address', title: 'address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }]
})
</script>

列冻结状态记忆

通过 custom-config.allowFixed 启用,启用后用户可以将最常用的列冻结在可视区内,方便操作

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage3',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: false,allowFixed: true,allowResizable: false,allowSort: false,allowGroup: false,allowValues: false,storeOptions: {visible: false, // 保存列可视状态resizable: false, // 保存列宽调整状态sort: false, // 保存列顺序状态fixed: true, // 保存列冻结状态aggGroup: false, // 保存列的行分组状态aggFunc: false// 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: 'Name' },{ field: 'role', title: 'role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age' },{ field: 'address', title: 'address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }]
})
</script>

列排序状态记忆

通过 custom-config.allowFixed 启用,启用后用户可对所有进行拖拽排序,将常用的列排序到前面去

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage4',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: false,allowFixed: false,allowResizable: false,allowSort: true,allowGroup: false,allowValues: false,storeOptions: {visible: false, // 保存列可视状态resizable: false, // 保存列宽调整状态sort: true, // 保存列顺序状态fixed: false, // 保存列冻结状态aggGroup: false, // 保存列的行分组状态aggFunc: false// 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: 'Name' },{ field: 'role', title: 'role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age' },{ field: 'address', title: 'address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }]
})
</script>

透视表分组和聚合函数(需要注意该功能是企业版的示例)

通过拖拽列到聚合列表,自动对数据进行合计汇总。设置 custom-config.allowGroup 和 custom-config.allowValues 启用拖拽功能,启用后用户可以对列表的数据进行手动分组以及对指定字段进行数据统计、汇总等复杂操作,无需开发介入

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage5',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: false,allowFixed: false,allowResizable: false,allowSort: false,allowGroup: true,allowValues: true,storeOptions: {visible: false, // 保存列可视状态resizable: false, // 保存列宽调整状态sort: false, // 保存列顺序状态fixed: false, // 保存列冻结状态aggGroup: true, // 保存列的行分组状态aggFunc: true // 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: 'Name' },{ field: 'role', title: 'role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age' },{ field: 'address', title: 'address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }]
})
</script>

完整状态记忆功能

请添加图片描述

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,id: 'myCustomStorage6',toolbarConfig: {custom: true},customConfig: {storage: true,allowVisible: true,allowFixed: true,allowResizable: true,allowSort: true,allowGroup: true,allowValues: true,storeOptions: {visible: true, // 保存列可视状态resizable: true, // 保存列宽调整状态sort: true, // 保存列顺序状态fixed: true, // 保存列冻结状态aggGroup: true, // 保存列的行分组状态aggFunc: true // 保存列聚合函数状态}},columnConfig: {drag: true,resizable: true},columns: [{ field: 'seq', type: 'seq', width: 90 },{ field: 'name', title: '产品名称', rowGroupNode: true },{title: '分组1',field: 'group1',children: [{ field: 'attr2', title: 'Attr2' },{ field: 'department', title: '部门' }]},{title: '分组3',field: 'group3',children: [{ field: 'plannedAmount', title: '实际销售' },{ field: 'attr1', title: 'Attr1' },{title: '分组4',field: 'group4',children: [{ field: 'actualAmount', title: '计划销售' },{ field: 'attr4', title: 'Attr4' },{ field: 'attr8', title: 'Attr8' }]}]},{ field: 'date', title: '日期' }],data: [{ id: 10001, name: '笔记本', department: '销售1部', actualAmount: 80, plannedAmount: 100, date: '2025-02-01' },{ id: 10002, name: '手机', department: '销售3部', actualAmount: 140, plannedAmount: 120, date: '2025-01-01' },{ id: 10003, name: '键盘', department: '销售2部', actualAmount: 220, plannedAmount: 200, date: '2025-05-01' },{ id: 10004, name: '鼠标', department: '销售1部', actualAmount: 110, plannedAmount: 140, date: '2025-01-01' },{ id: 10005, name: '笔记本', department: '销售2部', actualAmount: 40, plannedAmount: 90, date: '2025-01-01' },{ id: 10006, name: '鼠标', department: '销售4部', actualAmount: 40, plannedAmount: 120, date: '2025-03-01' },{ id: 10007, name: '键盘', department: '销售1部', actualAmount: 234, plannedAmount: 300, date: '2025-05-01' },{ id: 10008, name: '手机', department: '销售4部', actualAmount: 146, plannedAmount: 240, date: '2025-11-01' },{ id: 10009, name: '笔记本', department: '销售3部', actualAmount: 78, plannedAmount: 120, date: '2025-05-01' },{ id: 10010, name: '笔记本', department: '销售4部', actualAmount: 100, plannedAmount: 130, date: '2025-03-01' },{ id: 10011, name: '手机', department: '销售2部', actualAmount: 146, plannedAmount: 150, date: '2025-03-01' },{ id: 10012, name: '键盘', department: '销售4部', actualAmount: 130, plannedAmount: 130, date: '2025-10-01' },{ id: 10013, name: '手机', department: '销售2部', actualAmount: 140, plannedAmount: 80, date: '2025-02-01' },{ id: 10014, name: '笔记本', department: '销售1部', actualAmount: 200, plannedAmount: 100, date: '2025-08-01' },{ id: 10015, name: '键盘', department: '销售3部', actualAmount: 320, plannedAmount: 300, date: '2025-05-01' },{ id: 10016, name: '笔记本', department: '销售4部', actualAmount: 380, plannedAmount: 400, date: '2025-10-01' },{ id: 10017, name: '鼠标', department: '销售1部', actualAmount: 34, plannedAmount: 200, date: '2025-12-01' },{ id: 10018, name: '键盘', department: '销售4部', actualAmount: 100, plannedAmount: 150, date: '2025-10-01' },{ id: 10019, name: '鼠标', department: '销售3部', actualAmount: 90, plannedAmount: 120, date: '2025-02-01' },{ id: 10020, name: '手机', department: '销售2部', actualAmount: 40, plannedAmount: 50, date: '2025-03-01' }]
})
</script>

https://vxetable.cn

http://www.dtcms.com/a/314668.html

相关文章:

  • 【学习笔记】Manipulate-Anything(基于视觉-语言模型的机器人自动化操控系统)
  • 系统信息及进程管理命令
  • 【0基础3ds Max】常用快捷键
  • Planner 5D v2.29.0 安卓高级解锁版,手机3D家装,全套家具免费
  • [3D数据存储] Archive (File Container) | 创建/写入/读取 | 存储格式HDF5
  • SpringMVC 6+源码分析(三)DispatcherServlet实例化流程 2--(url 与contrller类如何进行映射)
  • 人工智能开发框架 10. MNIST手写数字识别任务(三)
  • 补:《每日AI-人工智能-编程日报》--2025年7月27日
  • STM32 串口收发HEX数据包
  • 汇川PLC通过ModbusTCP转Profinet网关连接西门子PLC配置案例
  • Linux Epool的作用
  • el-image图片预览下标错乱--解决:initial-index
  • 体验Java接入langchain4j运用大模型OpenAi
  • [激光原理与应用-134]:光学器件 - 图解透镜原理和元件
  • stm32/gd32驱动DAC8830
  • 川翔云电脑:引领开启算力无边界时代
  • 【云馨AI-大模型】2025年8月第一周AI浪潮席卷全球:创新与政策双轮驱动
  • Spring核心之面向切面编程(AOP)
  • 专题:2025生命科学与生物制药全景报告:产业图谱、投资方向及策略洞察|附130+份报告PDF、原数据表汇总下载
  • mysql远程登陆失败
  • 昇思学习营-模型推理和性能优化学习心得
  • 北京手机基站数据分享:9.3万点位+双格式,解锁城市通信「基础设施地图」
  • FreeRTOS学习(一)
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 网络安全 | 从 0 到 1 了解 WAF:Web 应用防火墙到底是什么?
  • 【Unity3D】Ctrl+Shift+P暂停快捷键(Unity键盘快捷键)用不了问题快捷键无法使用问题
  • 规则方法关系抽取-笔记总结
  • 《Leetcode》-面试题-hot100-子串
  • 数据结构(2)
  • AI开发框架与工具:构建智能应用的技术基石