В Vaadin 14
Стиль строки сетки на основе данных
Сначала вам необходимо установить генератор строк CSS для этой строки. Это добавит имя класса CSS к элементам td, созданным Grid. Функция генератора получает ваш элемент, и вы должны вернуть CSS имя класса в виде String или null, если вы не хотите добавлять имя класса для определенных строк. Несколько имен классов могут быть возвращены из генератора как разделенные пробелами.
grid.setClassNameGenerator(person -> {
if (person.getStatus() == Status.DIVORCED || person.getStatus() == Status.SINGLE) {
return "my-style-1";
} else {
return "my-style-2";
}
});
Чтобы изменить стиль на основе имен классов CSS, необходимо создать тему для Grid.
В папке frontend/styles
добавьте styles.css
.
td.my-style-1 {
background-color: black;
color: hotpink;
}
td.my-style-2 {
background-color: hotpink;
color: black;
}
и включите стиль в свое приложение.
@Route
@CssImport(value = "./styles/styles.css", themeFor = "vaadin-grid")
public class MainView extends VerticalLayout {
// your code for grid
}
Стиль ячейки сетки на основе данных
Импорт и создание стиля CSS выполняется так же, как и для стилизации строки, но используемый Grid API отличается.
Для ячейки следует использовать генератор имен классов столбцов:
grid.getColumnByKey("status").setClassNameGenerator(person -> {
if (person.getStatus() == Status.SINGLE) {
return "my-style-3";
}
return null;
});