Таблица Vaadin Grid: как отключить функцию сортировки и установить цвет одного столбца

Я использую Grid таблица в Vaadin для представления данных. Для этого я пытаюсь выяснить следующие вопросы:

1.) Как отключить функцию сортировки в заголовке каждого столбца

2.) Как установить цвет одного столбца в Grid стол

2 ответов


прежде всего, я нахожу Vaadin docs хорошее место, чтобы начать искать помощь. Для остальной части упражнения предположим, что у нас есть Grid С 3 простыми столбцами c1, c2 & c3:

Grid grid = new Grid();
grid.addColumn("c1", String.class);
grid.addColumn("c2", String.class);
grid.addColumn("c3", String.class);



1.) Как отключить функцию сортировки в заголовке каждого столбца

повторите каждый столбец и установите его свойство сортировки в false:

for (Grid.Column column : grid.getColumns()) {
    column.setSortable(false);
}

или просто получить это столбец и установите его свойство сортировки:

grid.getColumn("c1").setSortable(false);



2.) Как установить цвет одного столбца в таблице сетки

похоже на то, как это покончено со столом, вам нужно определить свой стиль 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


вот небольшое дополнение к Morfic хороший ответ:

1.) Как отключить функцию сортировки в заголовке каждого столбца

Grid запрашивает контейнер, является ли столбец сортируемым (см. appendColumn-method в Grid). Если требуется отключить сортировку для всех столбцов, можно переопределить getSortableContainerPropertyIds в контейнере и вернуть пустую коллекцию:

container = new BeanContainer<String, Dive>(Dive.class) {
            @Override
            public Collection<?> getSortableContainerPropertyIds() {
                LinkedList<Object> sortables = new LinkedList<Object>();
                return sortables;
            }
        };