Reputation: 33
I am trying to put TextField as Editable component in each row of Grid. but I don't know how to write back in the ValueChange event ?
below is my code
SerializableBiConsumer<emisTextField, PO_DETL_GRID> consumer =
(tf , detl) ->{
tf.setValue( detl.getP_NO());
} ;
SerializableSupplier<emisTextField> ss = () -> {
emisTextField tf =new emisTextField();
tf.addValueChangeListener(c->{
//how to write back newValue to my PO_DETL_GRID item ?
});
return tf;
};
ComponentRenderer cr = new ComponentRenderer<emisTextField,PO_DETL_GRID>(ss,consumer);
Grid.Column p_no_column = edit_grid.addColumn( cr);
grid.addColumn(cr);
Upvotes: 2
Views: 427
Reputation: 5342
You could use this alternative constructor:
SerializableFunction<MyItem, TextField> function = item -> {
TextField tf = new TextField();
tf.setValue(item.getMyValue());
tf.addValueChangeListener(e -> item.setMyValue(e.getValue()));
return tf;
};
ComponentRenderer<TextField, MyItem> cr = new ComponentRenderer<>(function);
Upvotes: 6