【问题标题】:Table merge cells - Vaadin表格合并单元格 - Vaadin
【发布时间】:2015-09-21 11:41:02
【问题描述】:

我正在使用 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);

【问题讨论】:

    标签: vaadin


    【解决方案1】:

    我认为,这在“正常方式”中是不可能的。但我知道如何模拟这个。

    第一个解决方案:

    您可以根据需要简单地使用 GridLayout 来构建网格。那么除了这样的网格大小之外,没有什么能限制你的想象力。它不应该太大(也指出here)。

    第二种解决方案:

    另一个建议有点疯狂。

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

    然后你处理重复的数据(从你的第一列和第二列),但你不能垂直对齐它们(文本将保持在顶部 - 组中的第一行)。

    第三种解决方案:

    查看Add-ons 列表。例如ItemGrid

    【讨论】:

    • 好的,我使用了GridLayout来创建表格,那么现在如何在这个布局上添加表格行??
    • 请看this answer。我认为最简单的方法 - 使用 CSS。
    猜你喜欢
    • 2018-03-21
    • 2020-09-03
    • 2011-01-14
    • 2011-05-19
    • 2013-07-05
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多