Vaadin Flow中如何获取Grid处于编辑状态的行索引
Vaadin Flow Grid编辑状态获取行索引实现方案
你之前调用grid.getEditor().getItem()只能获取到当前编辑行绑定的业务数据对象,本身不包含索引信息,所以无法直接获取行索引,可通过以下两种方式实现需求:
方案1:监听Editor打开事件直接获取索引(推荐)
Grid编辑器的打开事件原生携带行索引参数,是性能最优、准确性最高的实现方式,示例代码如下:
// 为Grid编辑器绑定打开监听器 grid.getEditor().addOpenListener(editorOpenEvent -> { // 直接从事件对象中获取当前编辑行的索引(从0开始计数) int editingRowIndex = editorOpenEvent.getRowIndex(); // 此处编写你的业务逻辑即可 });
方案2:通过编辑项匹配索引
如果需要在编辑器打开后的其他逻辑节点主动查询索引,可通过编辑绑定的数据项和当前数据集匹配查询,示例代码如下:
// 先判断编辑器是否处于打开状态 if (grid.getEditor().isOpen()) { // 获取当前编辑行绑定的业务数据对象,替换为你自己的业务类 YourBusinessBean editingItem = grid.getEditor().getItem(); // 从当前Grid加载的数据集中查询对应索引 int index = grid.getListDataView().getItems().toList().indexOf(editingItem); if (index != -1) { // 索引查询成功,执行业务逻辑 } }
注意事项
- 上述索引均为Grid当前加载数据集的排序/过滤后顺序,从0开始计数,不是原始数据源的固定索引
- 如果你使用的是懒加载分页DataProvider,优先使用方案1获取索引,避免全量查询导致性能问题
- 方案1的
getRowIndex()API兼容Vaadin Flow 23.1及以上版本,更低版本可直接使用方案2实现
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

