如何在不选择样式名称的情况下将样式名称添加到网格行?

How do I add style names to grid rows without selecting them?

我想在单击后设置网格行的样式。我在 itemClickListener 中获得了网格行/项目,但我需要避免使用 grid.select(item)。我已经实现了所需的输出,它会突出显示我使用网格 select 方法单击的行,但这会给我的应用程序带来问题,因为我不希望该行成为 select ed,但我希望它只是突出显示,例如将 CSS 样式应用于所述行。到目前为止,这是我的代码:

grid.addItemClickListener(e -> {
  grid.deselectAll();
  grid.select(e.getItem());
});

以及:

grid.setStyleGenerator(row -> grid.getSelectedItems().contains(row)
    ? getRowSelectedStyle(row)
    : null);

我似乎无法在论坛上找到任何可以为 clicked 行应用样式名称的内容。

您可能需要向您的项目 Bean 添加一个 属性,即“点击”。

那你可以

grid.addItemClickListener(e -> {
    e.getItem().setClicked(true);
    grid.getDataProvider().refreshItem(e.getItem());
});

grid.setStyleGenerator(row -> row.isClicked()
    ? getRowSelectedStyle(row)
    : null);