我在Vaadin中使用Grid
表进行数据表示。
为此,我试图弄清楚以下两个问题:
1.。)如何在每列的标题中禁用排序功能
2.。)如何设置Grid
表中一列的颜色
答案 0 :(得分:10)
首先,我发现Vaadin docs是一个开始寻求帮助的好地方。对于剩下的练习,假设我们有一个Grid
,其中有3个简单的列c1,c2和amp; C3:
Grid grid = new Grid();
grid.addColumn("c1", String.class);
grid.addColumn("c2", String.class);
grid.addColumn("c3", String.class);
1.。)如何在每列的标题中禁用排序功能
遍历每一列并将其sortable属性设置为 false :
for (Grid.Column column : grid.getColumns()) {
column.setSortable(false);
}
或者只是获取所需的一列并设置其可排序属性:
grid.getColumn("c1").setSortable(false);
2.。)如何设置网格表中一列的颜色
与was done with the table类似,您需要在theme中定义CSS样式:
@import "../valo/valo.scss";
@mixin mytheme {
@include valo;
// Insert your own theme rules here
.v-grid-cell.green {
background: #33BB00;
}
}
并使用CellStyleGenerator将样式应用于所需的列:
grid.setCellStyleGenerator(new Grid.CellStyleGenerator() {
@Override
public String getStyle(Grid.CellReference cellReference) {
if ("c1".equals(cellReference.getPropertyId())) {
return "green";
} else {
return null;
}
}
});
哪个应该产生以下内容:
答案 1 :(得分:2)
1.。)如何在每列的标题中禁用排序功能
如果列是可排序的,Grid会询问Container(请参阅Grid中的appendColumn-method)。如果要禁用所有列的排序,可以覆盖Container中的getSortableContainerPropertyIds并返回空集合:
container = new BeanContainer<String, Dive>(Dive.class) {
@Override
public Collection<?> getSortableContainerPropertyIds() {
LinkedList<Object> sortables = new LinkedList<Object>();
return sortables;
}
};