我想根据条件为网格线着色。 我试试这个:
Java:
gridEtudiant.setClassNameGenerator(t -> {
if (t.getEtud_numero().startsWith("2")) {
return "error_row";
}
return "";
});
Css:
td.error_row {
background-color: red;
}
HTML
<td id="vaadin-grid-cell-1" tabindex="0" role="gridcell" part="cell body-cell" first-column="" reorder-status="undefined" aria-selected="false" class="error_row" style="width: 100px; flex-grow: 1; order: 10000000;"><slot name="vaadin-grid-cell-content-1"></slot></td>
我们可以看到'class =“ error_row”',但它不是红色。
Vaadin版本为13.0.1
答案 0 :(得分:3)
您的Java代码看起来不错。
请确保您有一个类似webapp/frontend/styles/shared-styles.html
的html文件,其中包含以下内容:
<dom-module id="my-grid-theme" theme-for="vaadin-grid">
<template>
<style>
[part~="cell"].error_row {
background: red;
}
</style>
</template>
</dom-module>
如果随后您的布局中包含用@HtmlImport("frontend://styles/shared-styles.html")
注释的网格(由于已经应用了自定义css类,您似乎已经拥有了),它应该可以工作。
示例:
grid.addColumn(Customer::getFirstname).setHeader("Firstname");
grid.addColumn(Customer::getLastname).setHeader("Lastname");
grid.addColumn(Customer::getEmail).setHeader("Email");
grid.setClassNameGenerator(customer -> {
if (customer.getFirstname().equals("Marco")) {
return "error_row";
} else {
return "";
}
});
成为:
答案 1 :(得分:0)
要为网格本身(在您的情况下的单元格中)设置样式,您需要使用dom-module
。如果要为单元格的内容设置样式,则可以使用css
规则。 Styling By Overriding Component Styles
我在官方文档中没有找到使用setClassNameGenerator
的任何示例,但是从此PR Add setClassNameGenerator API to Grid and Column,您可以找到如何使用它。还有一个在grid-demo-styles.html处设置了类名subscriber
和minor
的示例。