如何启用/禁用编辑Vaadin Grid中的特定列?

时间:2017-05-10 18:58:07

标签: java vaadin

我有一个Vaadin Grid(myGrid),我使用

启用了单元格编辑
myGrid.setEditorEnabled(true);

但是,我想禁止在一个特定列中编辑单元格。我怎样才能做到这一点?我能想到的唯一解决方法是拦截对模型bean的调用,并向用户抛出一些异常/显示消息。有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

使用:

myGrid.setEditorEnabled(true);

不会自动使每个单元格都可编辑。您需要为每个可编辑列指定Binder。如Vaadin docs中所述:

  

编辑器基于Binder,用于将数据绑定到   编辑。 (...)对于每个应该可编辑的列,应该绑定   在编辑器绑定器中创建,然后将列配置为   使用那个绑定。

因此,如果您想禁止在特定列中进行编辑,那么就不要为它提供绑定。

答案 1 :(得分:1)

看看我的解决方案

indexedContainer = new IndexedContainer();
indexedContainer.addContainerProperty("name",String.class,"");
//....
//in add item process do the following 
Item item = indexedContainer.getItem(indexedContainer.addItem());
item.getItemProperty("name").setValue(myModel.getName());
item.getItemProperty("name").setReadOnly(true);
//...
myGrid.setContainerDataSource(container);

就是这样

我认为还有另一种方法,但我没有测试它

myGrid.getColumn("name").setEditable(false)

希望这可以帮助你