我有一个Vaadin Grid(myGrid),我使用
启用了单元格编辑myGrid.setEditorEnabled(true);
但是,我想禁止在一个特定列中编辑单元格。我怎样才能做到这一点?我能想到的唯一解决方法是拦截对模型bean的调用,并向用户抛出一些异常/显示消息。有更好的方法吗?
答案 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)
希望这可以帮助你