背景
在企业级表格应用中,合并单元格作为基础功能却蕴含着复杂的技术挑战。简单的展示合并区域相对容易实现,但在以下场景中会面临显著的技术难题:
- 大规模数据渲染:当表格数据量庞大且包含大量合并单元格时,会导致渲染性能下降和用户交互卡顿
- 特殊列处理:合并单元格涉及checkbox等交互组件时,需要特别处理全选/反选等逻辑
- 高级交互支持:合并单元格区域需要支持编辑、复制、粘贴等复杂操作,需要对合并数据特别处理
解决方案
e-virt-table(edit virtual table)是基于
canvas
实现以可编辑
为主的表格组件如:复制、粘贴、选择器、填充等;您可以将其它作数据网格、微软 Excel 或 goole sheet 支持虚拟滚动、单元格编辑、数据校验等功能。
虚拟滚动例子
e-virt-table是默认虚拟滚动的,具体例子就不演示了,可以查看文档
合并单元格选中例子
- 内置
SPAN_METHOD
方法可自定义处理合并单元格 - 内置快速快速合并单元格工具方法
CHECKBOX_KEY
设置选中key后选中回调的数据会自动关联相同key的
合并单元格可编辑及启用数据关联
- 更多可拓展编辑器的请参考e-virt-table文档,如果有需要后面可以写个文章说明
- 启用合并数据关联后更改合并单元格的数据会自动更改其他相关单元格的数据
- 合并数据关联需要注意在复制、粘贴、填充单元格时,可能会出现报错提示。如果不想使用系统自带的提示框,可以监听
error
事件进行自定义处理。 - 多级合并工具类方法,具体可查看例子怎么进行多级合并
// mergeRowCell第三个参数为关联key,内部会根据这个key进行合并进行数据对比
const { mergeRowCell, mergeColCell } = grid.getUtils();
结束语
目前项目在积极维护迭代中,如果能满足你们的有帮助的请给项目来个star呗,当然有好的想法也可以和我交流一下,本人也比较听劝,哈哈~~~
本人拓展了vue2、vue3的组件给你们参考,注意下面只是例子具体用什么UI组件库自己参考例子进行拓展,为了组件高拓展性目前是没有计划单独发布vue2、vue3库、react目前还在写......友情链接如下: