Hello I have a screen with lookupfield, datagrid with a valueCollectionDatasource with native sql query, I am trying to change datasource value but it no change noting, how I can modify the datasorce programatically depending of lookup field?
This is my valueCollectionDatasource:
<valueCollectionDatasource id="datoActaDs" datasourceClass="com.empowerment.app.web.acta.actaencabezado.OrigenDatoActa"> <properties> <property datatype="string" name="objetivo"/> <property datatype="string" name="noacta"/> <property datatype="dateTime" name="fh_creado"/> <property datatype="string" name="lugar"/> <property datatype="string" name="nombre"/> <property datatype="string" name="compromiso"/> <property datatype="boolean" name="acta_aprobada"/> </properties> </valueCollectionDatasource>
This is my datagrid
<dataGrid id="dgActa" visible="false" datasource="datoActaDs" width="100%"> <columns> <column id="noacta" caption="No Acta" property="noacta"/> <column id="fh_creado" caption="Día" property="fh_creado"/> <column id="objetivo" caption="Objetivo" property="objetivo"/> <column id="compromiso" caption="Compromisos" property="compromiso"/> <column id="acta_aprobada" caption="Aprobada" property="acta_aprobada"/> </columns> </dataGrid>
And this is my java class
@Inject
private CollectionDatasource<KeyValueEntity, Object> datoComiteDs;
@Inject
private CollectionDatasource<KeyValueEntity, Object> datoActaDs;
@Inject
private ActaService actaService;
@Inject
private DataGrid dgActa;
private Integer idComiteSeleccionado;
@Override
public void init(Map<String, Object> params) {
super.init(params);
datoComiteDs.addItemChangeListener(new ItemChangeListener<KeyValueEntity>());
Collection<KeyValueEntity> datoARefresh;
if(idComiteSeleccionado==null){
idComiteSeleccionado = 0;
}
datoARefresh = actaService.getDatosActaXComite(idComiteSeleccionado);
for (KeyValueEntity resultEntity : datoARefresh) {
datoActaDs.addItem(resultEntity);
}
dgActa.setDatasource(datoActaDs);
}
private class ItemChangeListener<T extends Entity> implements Datasource.ItemChangeListener<T> {
@Override
public void itemChanged(Datasource.ItemChangeEvent<T> e) {
datoActaDs.clear();
Collection<KeyValueEntity> datoARefresh;
idComiteSeleccionado = e.getItem().getValue("comiteId");
datoARefresh = actaService.getDatosActaXComite(e.getItem().getValue("comiteId"));
for (KeyValueEntity resultEntity : datoARefresh) {
datoActaDs.addItem(resultEntity);
}
dgActa.setDatasource(datoActaDs);
showNotification(e.getItem().getValue("comiteId").toString());
dgActa.setVisible(true);
datoActaDs.refresh();
datoActaDs.setRefreshOnComponentValueChange(true);
datoActaDs.addCollectionChangeListener(event ->{
datoActaDs.refresh();
});
}
}