VxeGRid树形表格编辑难点

引言


在多级BOM的情况下,会有键盘导航+编辑的需求。 此时的你把VxeGrid文档中的单元格编辑按键操作树形懒加载组件的代码组合一起,效果如下。

功能展示


切记给editConfig加上autoClear

当点击表格之外或者非编辑列之后,是否自动清除单元格的激活状态

此时没任何问题,可以正常导航和编辑。

但展开树形图时,在进行导航编辑.你会发现会有两个高亮,及父表格和子表格。效果如下

解析


回想下之前提及的那个API:autoClear.只有在表格外或非编辑列才会清除Active状态。既然是展开行,所以肯定是在同一个表格内,所以才会导致出现这个情况。

既然找到问题点了,那思路就是点击内部表格时,清除外部表格的Active.

我使用的相关api:

js 复制代码
cell-selected: 只对 mouse-config.selected 配置时有效,单元格被选中时会触发该事件 

 /**
   * 用于 mouse-config.selected,获取选中的单元格信息
   */
  getSelectedCell(): {
    row: D
    column: VxeTableDefines.ColumnInfo<D>
  }
  
   /**
   * 手动清除单元格选中状态
   */
  clearSelected(): Promise<any>
  

代码如下

js 复制代码
const tableRef = ref<VxeGridInstance | null>(null)

const handleExpandedTableCellSelected = async () => {
  // getSelectedCell获取外部table的选中cell,再在内部取消外部table的选中
  const $grid = tableRef.value
  const selectedCell = $grid?.getSelectedCell()
  // console.log('外部table selectedCell', selectedCell)
  //如果内部table有选中cell,则取消外部table的选中
  if (selectedCell) {
    await $grid?.clearSelected()
  }
}

<vxe-grid
    ref="expandGridRef"
    @cell-selected="handleExpandedTableCellSelected"    
>
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A1 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
honkun62 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19912 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端