Vaadin网格表:如何禁用排序功能并设置一列的颜色

时间:2016-02-24 12:36:08

标签: java sorting colors vaadin

我在Vaadin中使用Grid表进行数据表示。 为此,我试图弄清楚以下两个问题:

1.。)如何在每列的标题中禁用排序功能

2.。)如何设置Grid表中一列的颜色

2 个答案:

答案 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;
        }
    }
});

哪个应该产生以下内容:

enter image description here

答案 1 :(得分:2)

以下是Morficanswer的小补充:

  

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;
            }
        };