Vaadin 流:网格条件背景色

Tyv*_*ain 0 vaadin-grid vaadin10 vaadin-flow

我想根据条件为网格线着色。我试试这个:

爪哇:

gridEtudiant.setClassNameGenerator(t -> {
    if (t.getEtud_numero().startsWith("2")) {
        return "error_row";
    }
    return "";
});
Run Code Online (Sandbox Code Playgroud)

css:

td.error_row {
  background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我们可以看到 'class="error_row"' 但它不是红色的。

Vaadin 版本是 13.0.1

cod*_*aus 6

您的 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>
Run Code Online (Sandbox Code Playgroud)

如果您的布局包含注释的网格@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 "";
    }
});
Run Code Online (Sandbox Code Playgroud)

变成:

在此处输入图片说明