插入新行后是否可以直接对焦并打开网格单元格编辑器?我搜索了一段时间,但没有找到任何帮助。
我用
插入行grid.setItems(theListWithItems);
插入后编辑器关闭,我必须双击该行进行编辑。 我想在插入新行后立即打开编辑器。
任何帮助都是非常苛刻的。
提前致谢
答案 0 :(得分:1)
自Vaadin 8.2起,您现在可以在网格编辑器上调用editRow()
grid.getEditor().editRow(theListWithItems.size() -1);
打开新插入项目的编辑器。但是没有关注它,你仍然需要点击(一次,没有双击)你想要编辑的列。
但是,只有通过调用editRow()
才能关注该行。为了专注某个专栏我没有找到一个简单的功能,但我找到了一种方法:
每列需要一个已定义的Editor-Component(即TextField)。对于您最初要关注的列,请定义成员字段,以便在添加新项目时可以访问该字段。然后 - 在您致电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();
}