0
追加ボタンをクリックすると、新しく追加された表項目(別名行)を選択できるようにしたいと考えています。私の主な目的は、それを選択可能かつ編集可能にすることです(しかし、その行だけが今やテーブル全体です)。ここVaadin - 追加項目を選択可能にする(編集可能)
テーブルコードである:
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;
}
上記のコードは、選択された行に対してうまく動作するが、どのように新たに追加された行を直接選択して編集可能にできますか?
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);
}
});
ありがとうございます!それはまだうまくいきませんでしたが、それは良い考えです – natso
実際には、新しい項目に一意のIDを設定しますが、選択可能にしません。 – natso