好的,我终于解决了。我使用具有适当模板结构的模板渲染器。我以某种方式修改了单元格样式,我的渲染器 DIV 填充了整个单元格(从原始单元格中删除了任何填充/边距)
<dom-module id="grid-style" theme-for="vaadin-grid">
<template>
<style>
[part~='cell'] ::slotted(vaadin-grid-cell-content) {
padding: 0px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
--cellopa: 255;
}
[part~='cell'][aria-selected~="true"] ::slotted(vaadin-grid-cell-content) {
--cellopa: 0;
}
</style>
</template>
</dom-module>
我还在其中一个主要 CSS 中添加了一些简单的 CSS 声明:
vaadin-grid-tree-toggle flow-component-renderer {
width: 100%;
height: 100%;
}
vaadin-grid-cell-content flow-component-renderer {
width: 100%;
height: 100%;
flex-grow: 1;
}
这样渲染的 DIV 会填充整个单元格,我可以为它的背景着色。
现在问题出现在选择上,因为选择不再可见。为此,您会发现 --cellopa 变量通常设置为 255,而选定单元格设置为 0。
现在,当我在 div 上定义背景颜色时,我使用 rgba 并将 alpha 设置为 var(--cellopa) 变量,例如 rgba(255, 0, 0, var(--cellopa) ))
现在当没有选择行时,cellopa 是 255,所以背景是可见的,当我选择行时,cellopa 设置为 0,所以 DIV 的背景变得透明,并且行选择颜色在行可见。这速度超级快,而且更改选择不会导致任何故障,并且之前的着色状态也可以正常恢复。
我还设法解决了 treegrid 问题,并设法完全使用层次结构列的特殊模板为层次结构列着色,并在考虑到级别的情况下进行一些填充。