非缓冲模式退出编辑器中的Vaadin 14网格 [英] Vaadin 14 Grid in non-buffered mode exit editor

查看:15
本文介绍了非缓冲模式退出编辑器中的Vaadin 14网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Vaadin14中创建了一个自定义字段,它显示一个网格和两个按钮(添加行/清除网格)。此自定义域显示在CRUD编辑器中,该编辑器又有选项卡。

为了使用编辑器创建网格,我在";Non-Buffered&Quot;节中使用了此处所示的https://vaadin.com/docs/v14/ds/components/grid示例。

除了addCloseHandler(Component,Editor)之外,所有内容都按预期工作。在上面显示的示例中,Close处理程序方法的代码如下所示:

textField.getElement().addEventListener("keydown", e -> editor.cancel()).setFilter("event.code === 'Escape'");

在按Esc键或在处于编辑模式的单元格外部单击时关闭编辑器。

我的问题是,当我点击esc时,如果带有编辑器的网格位于CRUD表单内,则会显示CRUD放弃更改表单,而不是关闭编辑器。此外,在编辑的单元格外部单击时不会发生任何反应。

我认为这是由于setFilter方法中的";event.code";不正确,但我不确定如何确定在我的情况下触发的正确事件代码是什么。

我尝试将事件从";keydown";更改为";Focusout";,这导致当我在正在编辑的单元格外部单击时会调用回调方法,但编辑器仍未关闭(即单元格停留在编辑模式中)。我还尝试在回调方法中调用editor.close(),但没有成功。

推荐答案

必须使用Event.key而不是Event.code:

getElement().addEventListener("keydown", event -> editor.cancel())
        .setFilter("event.key === 'Escape' || event.key === 'Esc'");

这篇关于非缓冲模式退出编辑器中的Vaadin 14网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆