[英]Vaadin - Make added item selectable (and editable)
I would like to make my newly added table item (aka row) selectable as soon as it is added by clicking the add-button. 我想通过单击添加按钮使我新添加的表项(又名行)一经选择即可。 My main purpose is to make it both selectable and editable (but only that row, now the whole table).
我的主要目的是使其既可以选择又可以编辑(但仅此行,现在是整个表)。
Here is the table code: 这是表代码:
public Table createTable(BeanContainer<Long, PS_SECTION> beans) {
table.setImmediate(true);
table.setContainerDataSource(beans);
table.setColumnHeader("PS_SECTION", "ID");
table.setColumnHeader("NAME", "SECTION");
table.setColumnHeader("VORDER","ORDER");
table.addGeneratedColumn("ACTIVE", new Table.ColumnGenerator() {
@Override
public Object generateCell(final Table source, final Object itemId,
Object columnId) {
table.setTableFieldFactory(new DefaultFieldFactory() {
@Override
public Field<?> createField(Container container, final Object itemId, Object propertyId, Component uiContext) {
if (!itemId.equals(table.getValue())) {
return null;
}
Field<?> field = super.createField(container, itemId, propertyId, uiContext);
field.setBuffered(true);
return field;
}
});
table.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(Property.ValueChangeEvent event) {
if (table.getValue() != null) {
editButton.setVisible(true);
}
else {
editButton.setVisible(false);
}
}
});
table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
@Override
public void itemClick(ItemClickEvent itemClickEvent) {
if (itemClickEvent.isDoubleClick() && !table.isEditable()) {
table.setValue(itemClickEvent.getItemId());
configureEditable(true);
// THE FUNCTION THAT MAKES THE SELECTED ROW EDITABLE
editButton.setVisible(false);
addButton.setVisible(false);
}
}
});
// ....SOME MORE TABLE ATTRIBUTES HERE....
return table;
}
The code above works fine for the selected rows, but how can I make the newly added row directly selected and editable?? 上面的代码对于选定的行来说效果很好,但是如何使新添加的行直接被选中并可以编辑呢?
addButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
addList(); //HERE THE ROW (AND THE BEAN) IS ADDED
/**
* What to put here?
*
*/
configureEditable(true);
}
});
Object itemId = createNewBean();
//create a new bean, that returns a unique id that can be set as new item id. //创建一个新bean,该bean返回可以设置为新项目ID的唯一ID。
table.addItem(itemId); //add this newly created item to the table
//set the column values here for this particular item
table.getItem(itemId).getProperty("column_name").setValue("column_value");
//similarly set values of other columns for this particular item
table.setValue(itemId); //this selects the just added row
I hope it helps. 希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.