Filtros a pedidos dataset na View: Tag <dif:datasetFilter>

2 views
Skip to first unread message

Pedro Viegas

unread,
Nov 8, 2021, 1:07:44 PM11/8/21
to DIF2 Mailing list
Boa tarde,

Foi criada uma nova funcionalidade na DIF para permitir na View determinar filtros a pedidos de dataSets.
Estes funcionam em Grids, ComboField, PickerFields e ListPickers.

Exemplos de utilização:
<dif:comboField id="tipoAula" dataSetBeanClass="<%=TableTipoAulaSum.class%>" addNull="false"
readonly="${stage.readOnly}">
<dif:datasetFilter attribute="<%=TableTipoAulaSum.Fields.DISPONIVEL%>" value="S"/>
<dif:datasetFilter attribute="<%=TableTipoAulaSum.Fields.DISPSUMESTAGIO%>" value="S"/>
</dif:comboField>
<dif:pickerField id="filtroCriarTurmaCodePeriodo" label="${messages.periodo}" width="400">
<siges:periodoLectivoPicker id="periodoLectivoPicker">
<dif:datasetFilter attribute="<%=TablePeriodolectivo.FK().id().CODEDURACAO()%>" value="A"/>
</siges:periodoLectivoPicker>
</dif:pickerField>

Para as utilizações em que se utilizem ajaxEvent (ao invés dos automáticos que usem o dataSetBeanClass) é necessário na definição do JSONResponse passar o context. Caso contrário ele não terá o request para obter os parâmetros passados pela View no pedido. Ex:

JSONResponseDataSetGrid<TablePeriodolectivo> response =
new JSONResponseDataSetGrid<TablePeriodolectivo>(this.context, TablePeriodolectivo.getDataSetInstance());
...e não apenas...
JSONResponseDataSetGrid<TablePeriodolectivo> response =
new JSONResponseDataSetGrid<TablePeriodolectivo>(TablePeriodolectivo.getDataSetInstance());

Com os melhores cumprimentos,



Pedro Viegas
Director Departamento de Desenvolvimento
(Development Manager)
Digitalis Informática Lda
R&D: http://development.digitalis.pt


Pedro Viegas

unread,
Mar 29, 2022, 3:26:32 PM3/29/22
to DIF2 Mailing list
Boa tarde,

Esta funcionalidade não estava a funcionar e foi corrigida no branch da nova DIF (2.9).
Para lá da correção foram resolvidas duas limitações:

1. A obrigatoriedade de passar o context no construtor do JSONResponse deixou de existir.
Caso não seja passado o context apenas muda o momento da aplicação dos filtros. Deixa se ser no início (construtor) e passa a ser apenas na execução do response (getResponse).

2. Passa a ser ainda possível definir estes filtros via JavaScript em qualquer store.
Ver exemplo:
var store = Ext.getCmp('entidadesPickerGrid').getStore();
store.addDatasetFilter('tipo', 'IES');

Com os melhores cumprimentos,



Pedro Viegas
Director Departamento de Desenvolvimento
(Development Manager)
Digitalis Informática Lda
R&D: http://development.digitalis.pt



Reply all
Reply to author
Forward
0 new messages