我正在使用vaadin tree table,并且我想为满足某些业务标准的某些行设置第一列 colspan (等于表中列的总数)。对于其余的表格行,各个列将正常显示。
我尝试过使用生成的列,并通过设置明确的列宽,以及使用复合列;但这样做会改变所有行/列的布局。请建议我们将如何实现这一目标。
谢谢!
问问题
1071 次
2 回答
0
您可以使用com.vaadin.ui.Table.setRowGenerator
:
Java 8 + Vaadin 7.6.1 的示例
setRowGenerator((Table table, Object itemId) -> {
if (itemId instanceof MyClassThatIdentifiesARowToMerge) {
Table.GeneratedRow generatedRow = new Table.GeneratedRow("text-of-merged-cell");
generatedRow.setSpanColumns(true);
return generatedRow; // merge
}
return null; // doesn't merge
} );
于 2017-06-21T17:20:33.530 回答
0
您可以通过调用来设置列的宽度TreeTable#setColumnExpandRatio(String columnName, float value)
。
在下面的示例中,我将“名称”列的宽度设置为 75%。如果您不指定任何其他内容,则其余列将适合其余空间。
ttable.setColumnExpandRatio("Name", 0.75f);
ttable.setColumnExpandRatio("Number", 0.25f); //not necessary
试试下面我从 Vaadin 书中修改的例子:
@Theme("mytheme")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
TreeTable ttable = new TreeTable();
ttable.addContainerProperty("Name", String.class, null);
ttable.addContainerProperty("Number", Integer.class, null);
//Add some sample data
ttable.addItem(new Object[]{"Menu", null}, 0);
ttable.addItem(new Object[]{"Beverages", null}, 1);
ttable.setParent(1, 0);
ttable.addItem(new Object[]{"Foods", null}, 2);
ttable.setParent(2, 0);
ttable.addItem(new Object[]{"Coffee", 23}, 3);
ttable.addItem(new Object[]{"Tea", 42}, 4);
ttable.setParent(3, 1);
ttable.setParent(4, 1);
ttable.addItem(new Object[]{"Bread", 13}, 5);
ttable.addItem(new Object[]{"Cake", 11}, 6);
ttable.setParent(5, 2);
ttable.setParent(6, 2);
ttable.setColumnExpandRatio("Name", 0.75f);
ttable.setColumnExpandRatio("Number", 0.25f);
ttable.setSizeFull();
layout.addComponents(ttable);
layout.setMargin(true);
layout.setSpacing(true);
setContent(layout);
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}
于 2017-01-16T11:53:04.983 回答