You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需选中网格行即可为其添加样式名称

实现方案

你可以通过自定义变量存储当前高亮的行条目,配合行刷新逻辑实现不触发行选中的高亮效果,完全不需要调用Grid的选中相关API:

  1. 首先在当前类中定义一个成员变量,用于存储当前需要高亮的行对应的数据条目:
    // T替换为你的Grid绑定的数据实体类型
    private T currentHighlightedItem;
    
  2. 修改行点击监听器逻辑,仅更新自定义的高亮变量,同时刷新受影响的行触发样式重计算:
    grid.addItemClickListener(e -> {
        T clickedItem = e.getItem();
        // 刷新之前高亮的行,清除旧样式
        if (currentHighlightedItem != null) {
            grid.refreshItem(currentHighlightedItem);
        }
        // 若需要支持二次点击取消高亮,保留下行逻辑,不需要则直接赋值为clickedItem即可
        currentHighlightedItem = currentHighlightedItem == clickedItem ? null : clickedItem;
        // 刷新当前点击的行,应用新样式
        if (currentHighlightedItem != null) {
            grid.refreshItem(currentHighlightedItem);
        }
    });
    
  3. 修改样式生成器,判断当前行是否匹配自定义的高亮条目即可:
    grid.setStyleGenerator(row -> 
        Objects.equals(currentHighlightedItem, row) ? getRowSelectedStyle(row) : null
    );
    
    注意需提前导入java.util.Objects工具类,避免currentHighlightedItem为空时出现空指针异常

该方案完全不涉及Grid内置的选中状态管理,不会触发行选中事件、也不会修改getSelectedItems()的返回结果,完全符合你的业务需求。


内容的提问来源于stack exchange,提问作者Michael Kročka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:24:01