DataTable clearFilter() ne fonctionne pas correctement

J'ai un compliquer JSF qui contiennent des dataTable avec filtre dans chacune des colonnes.
Afin de s'assurer que le bouton générer récupère toutes les données d'abord, je dois supprimer tous les filtres lorsque l'utilisateur presse le bouton.

J'essaie de faire utiliser onclick mais alors je ne pouvais pas voir le blockUI j'ai aussi essayer de le compléter (ajax), mais encore il ne fonctionnait pas correctement avec tous les autres éléments (blockUI ,message).
J'ai décidé d'essayer d'effacer les filtres via un serveur de côté, mais seulement dataTable.reset() fonctionne.

Je n'ai plus d'idées sur la façon de nettoyer les filtres ???

Est cette API travaille ?

Remercie de votre aide

Grâce

<h:panelGrid columns="1" style="width: 100%">
<p:panel id="vt-panel">
<h:panelGrid columns="5" cellpadding="2" >  
<h:outputText value="Start Date"  />
<p:calendar id="vt-start" value="#{vtRepBean.startDate}" binding="#{startDateComponent}" maxlength="9" size="9" pattern="dd-MMM-yy" title="dd-MMM-yy" required="true" maxdate="#{vtRepBean.endDate}">
<p:ajax event="dateSelect" listener="#{vtRepBean.handleStartDateSelect}" update=":mainForm:vt-end"/>
</p:calendar>
<h:outputText value="End Date"  />
<p:calendar id="vt-end" value="#{vtRepBean.endDate}" maxlength="9" size="9" pattern="dd-MMM-yy" title="dd-MMM-yy" required="true" mindate="#{vtRepBean.startDate}">
<p:ajax event="dateSelect" listener="#{vtRepBean.handleEndDateSelect}" update=":mainForm:vt-start"/>
</p:calendar>
<p:commandButton
id="genVtBtn"
value="Generate"
actionListener="#{vtRepBean.handleVTGenerateButton}"
update=":mainForm:vt-panel,:mainForm:vt-panel-table">
</p:commandButton>
</h:panelGrid>
</p:panel>
</h:panelGrid> 
<p:growl id="vt_message" showDetail="true" autoUpdate="true"/>
<h:panelGroup id="vt-panel-table">
<p:dataTable id="vtDataTable"
widgetVar="vtWidget"
var="reportObject"
value="#{vtRepBean.reportObjectsList}"
rendered="#{vtRepBean.renderVTReport}"
filteredValue="#{vtRepBean.filteredVTList}"
paginator="true"
paginatorPosition="bottom"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="50,100,200"
rows="50"
style="width: 100%"> 
<p:columnGroup type="header"> 
<p:row>  
<p:column colspan="5" headerText="VT request"/> 
<p:column colspan="1" headerText="Dis" /> 
</p:row>  
<p:row>  
<p:column headerText="CREATE DATE" sortBy="#{reportObject.log.createDate}" filterBy="#{reportObject.log.createDate}" filterMatchMode="contains"/>  
<p:column headerText="IP" sortBy="#{reportObject.log.ip}" filterBy="#{reportObject.log.ip}" filterMatchMode="contains"/>    
</p:row>
</p:columnGroup>
<p:column >  
<h:outputText value="#{reportObject.log.createDate}"/>  
</p:column>
<p:column >  
<h:outputText value="#{reportObject.log.ip}"/>  
</p:column>    
</p:dataTable>
<p:commandLink rendered="#{vtRepBean.renderVTReport}" ajax="false" onclick="PrimeFaces.monitorDownload(showStatus, hideStatus)">  
<p:graphicImage value="resources/images/excel.png" title="excel" style="border-color: white"/>  
<p:dataExporter id="xlsReport"
type="xls" 
target="vtDataTable"
fileName="VTReport"
postProcessor="#{vtRepBean.postProcessXLS}"/>
</p:commandLink>
</h:panelGroup>
<p:blockUI widgetVar="blockVTPanel" trigger="genvtBtn" block="vt-panel">
<div class="disable-scroll">
<p:graphicImage value="resources/images/ajax-loader.gif"/> 
</div>
</p:blockUI>

     DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("mainForm:vtDecomDataTable");
if (!dataTable.getFilters().isEmpty()) {
logger.info("dataTable.getFilters().isEmpty() :" + dataTable.getFilters().isEmpty());
dataTable.getFilters().clear();//not working
dataTable.getFilteredValue().clear();//not working
dataTable.setFilteredValue(null);//not working
dataTable.setFilters(null);//not working
dataTable.setFilterMetadata(null);//not working 
dataTable.reset();//working 
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update("mainForm:vtDecomDataTable");
}
  • Où est vtDecomDataTable dans votre <p:dataTable>
  • Désolé faute de frappe erreur, Il doit être “requestContext.mise à jour("mainForm:vtDataTable")”
  • Même problème ici, pas de réponse pour ce génie gars ?
  • Avez-vous essayé de vider filteredVTList et ensuite mettre à jour la table de données ?
  • public void resetFilterDatatable( {filteredVTList = null;} fonctionne pour le datatable, mais le filtre d'entrée de colonne n'est pas effacé, c'est le problème.
InformationsquelleAutor angus | 2014-05-22