我在vaadin中创建了一个表,表中的每一行都有一个编辑按钮。
table.setEditable(true) 但这使得整个表都是可编辑的。当我点击编辑按钮时,我只希望选中的行是可编辑的,如果可能的话,一些单元格是自定义的,例如复选框,下拉框等。有什么建议吗?
发布于 2014-10-31 20:34:13
下面是一个非常简单的例子:
final Table table = new Table();
table.setEditable(true);
table.setTableFieldFactory(new TableFieldFactory() {
private static final long serialVersionUID = 1L;
@Override
public Field<?> createField(Container container, Object itemId, Object propertyId, Component uiContext) {
if (itemId == table.getData()) {
return DefaultFieldFactory.get().createField(container, itemId, propertyId, uiContext);
}
return null;
}
});
table.addGeneratedColumn("", new ColumnGenerator() {
private static final long serialVersionUID = 1L;
@Override
public Object generateCell(Table source, final Object itemId, Object columnId) {
Button button = new Button(itemId == table.getData() ? "Save" : "Edit");
button.addClickListener(new ClickListener() {
private static final long serialVersionUID = 1L;
@Override
public void buttonClick(ClickEvent event) {
if (table.getData() == null) {
// edit
table.setData(itemId);
table.refreshRowCache();
} else if (itemId == table.getData()) {
// save
table.setData(null);
// ...
table.refreshRowCache();
}
}
});
return button;
}
});
// ...https://stackoverflow.com/questions/16142212
复制相似问题