我使用Vaadin's
表并使用SQLContainer
设置数据:
resultTable.setContainerDataSource(mySQLContainer);
resultTable.setColumnHeader("internalid", "Internal Id");
现在,我想将此字段设为表格列中的链接。
由于我是通过SQLCOntainer
直接设置所有字段,因此我不确定如何更改单个字段的外观。
有人可以帮忙吗?
答案 0 :(得分:0)
您可以使用TableFieldFactory提供自己的类型映射。
https://vaadin.com/api/com/vaadin/ui/TableFieldFactory.html
只需在表格中指定自己的类,就可以了。
另见:Vaadin 7 : TableFieldFactory
内联类的示例:
// Set a custom field factory that overrides the default factory
table.setTableFieldFactory(new DefaultFieldFactory() {
private static final long serialVersionUID = 8585461394836108250L;
@Override
public Field createField(Container container, Object itemId,
Object propertyId, Component uiContext) {
// Create fields by their class
Class<?> cls = container.getType(propertyId);
// Create a DateField with year resolution for dates
if (cls.equals(Date.class)) {
DateField df = new DateField();
df.setResolution(DateField.RESOLUTION_YEAR);
return df;
}
// Create a CheckBox for Boolean fields
if (cls.equals(Boolean.class))
return new CheckBox();
// Otherwise use the default field factory
return super.createField(container, itemId, propertyId,
uiContext);
}
});
答案 1 :(得分:0)
将列值显示为此类链接的最佳方法是通过调用ColumnGenerator为该列注册Table.addGeneratedColumn
生成器本身可以访问后备容器属性并返回com.vaadin.ui.Link
的实例。对于列ID,您可以使用现有的容器ID来“遮蔽”容器列。