【问题标题】:How do I add style names to grid rows without selecting them?如何在不选择网格行的情况下将样式名称添加到网格行?
【发布时间】:2021-09-14 00:35:39
【问题描述】:

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

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

还有:

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

我似乎在论坛上找不到任何可以为 clicked 行应用样式名称的东西。

【问题讨论】:

    标签: css vaadin highlight vaadin8


    【解决方案1】:

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

    那你就可以了

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

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

    【讨论】:

    • 我也有同样的想法,但不知道我需要刷新该项目。此外,我添加了一些代码以在选择新项目时取消选择所有项目:e.getSource().getDataProvider().fetch(new HierarchicalQuery<>(null, null)).forEach(item ->{item.setClicked(false);facetSearchPanel.getSearchResultPanel().getResultTable().getDataProvider().refreshItem(item);});
    猜你喜欢
    • 2020-09-12
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2018-12-30
    • 2021-12-09
    相关资源
    最近更新 更多