2015-09-21 166 views
1

我正在用Vaadin创建表。一些细胞正在重复。所以我想让它们合并到一个单元格中,就像你在图像上看到的那样:enter image description here表合并单元格 - Vaadin

第一张图片显示了表格现在的样子,第二张图片显示了我希望如何使用合并的单元格。

我使用这个代码:

Table table = new Table(AppData.getMessage("menu.report2")); 
table.addContainerProperty(tableHeaders[0], String.class, null); 
table.addContainerProperty(tableHeaders[1], String.class, null); 
table.addContainerProperty(tableHeaders[2], String.class, null); 
table.addContainerProperty(tableHeaders[3], String.class, null); 

List<User> employeeList = employeeDAO.findAllEmployees(); 
int i; 
for (i = 0; i < employeeList.size(); i++) { 
    User employee = employeeList.get(i); 
    table.addItem(new Object[]{ 
      CaseStatus.OPEN, 
      tasksDAO.countTasks(CaseStatus.OPEN), 
      employee.getFirstAndLastName(), 
      tasksDAO.countTasks(employee, CaseStatus.OPEN)}, 
      i); 
} 

for (int j = 0; j < employeeList.size(); j++) { 
    User employee = employeeList.get(j); 
    table.addItem(new Object[]{ 
      CaseStatus.CLOSED, 
      tasksDAO.countTasks(CaseStatus.CLOSED), 
      employee.getFirstAndLastName(), 
      tasksDAO.countTasks(employee, CaseStatus.CLOSED)}, 
      i + j); 
} 


table.setPageLength(table.size()); 

addComponent(table); 
setComponentAlignment(table, Alignment.TOP_CENTER); 
setMargin(true); 

回答

1

我想,这是不是在“正常途径”的可能。但我有一个想法如何模拟这一点。

解决方案一:

你可以简单地使用网格布局,你想建立网格。那么除了这种网格的大小之外,没有什么限制你的想象力它不应该很大(也指出here)。

解决方法二:

另一个建议是有点疯狂。

  1. 禁用Table/Grid条纹。
  2. 在一组类似的单元格中,只填充第一行。左边休息空白(或字符串中的空格)。

然后您将处理重复的数据(来自您的第一和第二列),但不能垂直对齐它们(文本将停留在组的顶部 - 第一行)。

解决方案三:

检查Add-ons名单。例如ItemGrid

+0

好的,我用GridLayout来创建表,所以现在我怎么能在这个布局上添加表格行? – KiKo

+0

请看[这个答案](http://stackoverflow.com/a/5622571)。我认为最简单的方法 - 使用CSS。 – jsosnowski