插入新行后是否可以直接聚焦并打开网格单元格编辑器?我已经搜索了一段时间,但没有发现任何有用的东西。
我正在插入行
grid.setItems(theListWithItems);
插入后编辑器关闭,我必须双击该行进行编辑。我希望编辑器在插入新行后立即打开。
非常感谢任何帮助。
提前致谢
插入新行后是否可以直接聚焦并打开网格单元格编辑器?我已经搜索了一段时间,但没有发现任何有用的东西。
我正在插入行
grid.setItems(theListWithItems);
插入后编辑器关闭,我必须双击该行进行编辑。我希望编辑器在插入新行后立即打开。
非常感谢任何帮助。
提前致谢
从 Vaadin 8.2 开始,您现在可以在网格编辑器上调用editRow()
grid.getEditor().editRow(theListWithItems.size() -1);
打开新插入项目的编辑器。但是没有关注它,您仍然需要单击(一次,无需双击)进入您要编辑的列。
但是,该行不仅仅通过调用editRow()
. 为了关注某个列,我还没有找到一个简单的函数,但是我找到了一种方法来做到这一点:
每列都需要一个定义的编辑器组件(即一个文本字段)。对于您希望最初关注的列,定义一个成员字段,以便在添加新项目时可以访问它。然后 - 在您调用之后editRow()
- 您可以调用focus()
该编辑器组件。
private TextField fooEditorTextField = new TextField();
private createGrid(){
// create your grid as usual
// define Editor components for grid
grid.getEditor().setEnabled(true);
grid.getColumn("Foo").setEditorComponent(fooEditorTextField );
grid.getColumn("Bar").setEditorComponent(new TextField());
}
private void addNewItemToGrid(){
MyItem newItem = new MyItem();
theListWithItems.add(newItem);
grid.setItems(theListWithItems);
// open editor for new Item
grid.getEditor().editRow(theListWithItems.size() -1);
// Focus the "Foo" column in the editor of the new item
fooEditorTextField.focus();
}