2

插入新行后是否可以直接聚焦并打开网格单元格编辑器?我已经搜索了一段时间,但没有发现任何有用的东西。

我正在插入行

grid.setItems(theListWithItems);

插入后编辑器关闭,我必须双击该行进行编辑。我希望编辑器在插入新行后立即打开。

非常感谢任何帮助。

提前致谢

4

1 回答 1

1

从 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();
}
于 2018-05-07T08:33:32.073 回答