Vaadin Grid单列添加表头分组的实现方案咨询
Vaadin Grid 单列表头分组解决方案
问题说明
使用Vaadin Grid为单列添加表头分组时,直接调用headerRow.join(singleColumn)会抛出IllegalArgumentException: Cannot join less than 2 cells异常,因为join方法要求至少合并2个单元格。
解决方案
对于单列对应的部门表头,无需使用join方法,直接获取该列对应的表头单元格并设置文本即可,视觉效果和多列分组一致,且不会触发异常。
修改后的代码示例:
Grid<Person> grid = new Grid<>(Person.class, false); Grid.Column<Person> john = grid.addColumn(..).setHeader("John"); Grid.Column<Person> fred = grid.addColumn(..).setHeader("Fred"); Grid.Column<Person> marcus = grid.addColumn(..).setHeader("Marcus"); Grid.Column<Person> adam = grid.addColumn(..).setHeader("Adam"); Grid.Column<Person> peter = grid.addColumn(..).setHeader("Peter"); Grid.Column<Person> eve = grid.addColumn(..).setHeader("Eve"); HeaderRow headerRow = grid.prependHeaderRow(); headerRow.join(john, fred).setText("engineers"); headerRow.join(marcus, adam, peter).setText("economists"); // 替换join为getCell,直接设置单列的表头文本 headerRow.getCell(eve).setText("charwoman");
原理说明
join方法的作用是合并多个相邻单元格为一个单元格,而单列本身不需要合并,直接操作对应表头单元格的文本,就能在该列上方显示部门名称,实现和多列分组相同的视觉效果,同时避开了join方法的参数限制。
内容的提问来源于stack exchange,提问作者Andromeda
相关产品推荐
相关产品推荐

