vxe-table icon indicating copy to clipboard operation
vxe-table copied to clipboard

vxe-table表头合并,是否可以支持colspan和rowspan

Open mdxiaohu opened this issue 4 years ago • 12 comments

这个需求解决了什么问题:

我查阅了vxe-table的相关issue,包括gitee,发现之前有人提过类似的问题,但是都没有回应。

现有的表格API可以对表头进行分组,可是不能像内容一样进行相关的表格合并。

使用表头分组方式,从控制台可以看到,表格加入了colspan的属性。

1

我们的目标是想实现如下的效果,例如:

2

我查阅了API,有这样一个方法,span-method。

它可以对表格的内容进行合并,但是无法拿到表头的合并数据。

3

建议的 API 是什么样的:

是否可以开放,表头合并相关的API,例如这样的:head-method

目前,我不太清楚,这个提议是否合理。

当然,或许你有更好的办法。

是否已有其他不错的替代方案:

暂时没有,不知道使用渲染器相关的API是否可以解决此类需求,我还在尝试。

mdxiaohu avatar Dec 13 '21 05:12 mdxiaohu

目前是不支持表头合并的

xuliangzhan avatar Dec 13 '21 13:12 xuliangzhan

好的,非常感谢,我再考虑下其他的可行性方案。

mdxiaohu avatar Dec 15 '21 02:12 mdxiaohu

害~我也需要这个功能

H402861965 avatar Sep 27 '22 09:09 H402861965

现在也不支持表头合并吗

bygsn avatar Feb 27 '23 10:02 bygsn

我也需要这个功能, 后续会列入到计划里面吗

CassieLiu6 avatar Aug 31 '23 01:08 CassieLiu6

// 这是一段狗皮膏药,用来支持 vxe-table 不支持的 th 设置 colspan=2 的逻辑
mounted() {
  const tableDom = this.$el.querySelectorAll('table')?.[0]
  const handler = (mutationList, observer) => {
    const tableDom = this.$el.querySelectorAll('table')?.[0]
    const oneTh = tableDom?.querySelectorAll('tr th')?.[0] // colspan=2 的列
    const twoTh = tableDom?.querySelectorAll('tr th')?.[1] // 需要被隐藏的列
    if (mutationList.find(item => item.attributeName === 'colspan')) {
      if (oneTh && oneTh.getAttribute('colspan') !== '2') {
        oneTh.setAttribute('colspan', 2)
      }
      return
    }
    if (oneTh) {
      oneTh.setAttribute('colspan', 2)
    }
    if (twoTh) {
      twoTh.style.display = 'none'
    }
  }
  const observer = new MutationObserver(handler)
  observer.observe(tableDom, { attributes: true, childList: true, subtree: true })
}

贴了一段狗皮膏药,病好了,然后跟产品说一下,不好实现,产品说 ok,然后用其他方案去代替,然后撕掉狗皮膏药。

MrOhyang avatar Nov 07 '23 08:11 MrOhyang

@MrOhyang

可用就行,产品和领导可不管怎么实现的,只要看着没问题就能过~

mdxiaohu avatar Nov 07 '23 08:11 mdxiaohu

尽量不要操作dom,其实通过修改配置就可以解决,完美操作合并各种表头合并

yzy9527 avatar Nov 23 '23 09:11 yzy9527

尽量不要操作dom,其实通过修改配置就可以解决,完美操作合并各种表头合并

怎么修改

botshen avatar Dec 04 '23 00:12 botshen

尽量不要操作dom,其实通过修改配置就可以解决,完美操作合并各种表头合并

怎么修改

headerCellClassName回调修改rowSpan或colSpan,再将不需要的单元格使用css隐藏就可以了

yzy9527 avatar Dec 04 '23 02:12 yzy9527