0

完成过滤表结束时调用backingbean的方法。使用Primefaces,数据表如下所示:

<p:dataTable id="tabla_gral" rendered="#{consumoMaterial.verTabla}" var="item" paginator="true" rows="15" rowKey="#{item.no}" value="#{consumoMaterial.listadoConsumo}" filteredValue="#{consumoMaterial.listadoConsumoFiltered}">
  <p:ajax event="filter" listener="#{consumoMaterial.actualizarSaldos}" update=":form2:tabla_gral" />
  <f:facet name="header">
    <h:outputText value="Búsqueda de Consumo por: #{consumoMaterial.tipoBuscar}: '#{consumoMaterial.codigo}'" />
  </f:facet>
  <p:column exportable="#{consumoMaterial.no}" rendered="#{consumoMaterial.no}" id="cclave" sortBy="#{item.no}" filterBy="#{item.no}" filterMatchMode="contains">
    <f:facet name="header">
      <h:outputText value="Nro" />
    </f:facet>
    <h:outputText value="#{item.no}" />
  </p:column>
  <p:column exportable="#{consumoMaterial.centroCosto}" rendered="#{consumoMaterial.centroCosto}" id="cconcepto" sortBy="#{item.centroCosto}" filterBy="#{item.centroCosto}" filterMatchMode="contains">
    <f:facet name="header">
      <h:outputText value="Centro de Costo" />
    </f:facet>
    <h:outputText value="#{item.centroCosto}" />
  </p:column>
  <p:column exportable="#{consumoMaterial.codigoAlmacen}" rendered="#{consumoMaterial.codigoAlmacen}" id="ctipo" sortBy="#{item.codigoAlmacen}" filterBy="#{item.codigoAlmacen}" filterMatchMode="contains">
    <f:facet name="header">
      <h:outputText value="Almacén" />
    </f:facet>
    <h:outputText value="#{item.codigoAlmacen}" />
  </p:column>
</p:dataTable>

ajax event="filter"不起作用,因为它在过滤时不是在完成时。

4

1 回答 1

0

您可以:在过滤器事件中,您在 oncomplete 或 onsuccess 中调用 JavaScript 函数(这取决于您的目标),JavaScript 函数将触发 click 事件到命令按钮,然后将您想要的操作代码放入该命令按钮:

<h:form id="form">  
    <script type="text/javascript">
                    function test(){
                        $(PrimeFaces.escapeClientId('form:btn')).click();
                    }
                </script>
                <p:commandButton  style="display:none !important" id="btn" oncomplete="alert('ab');" value="SB"/>
                <p:dataTable   var="carr" value="#{tabview.l1}" id="carList" >  
                    <p:ajax event="filter" oncomplete="test();"/>
                    <p:column filterMatchMode="contains" filterBy="#{carr.model}" headerText="Model" style="width:30%">  
                        <h:outputText value="#{carr.model}" />  
                    </p:column>  
                    <p:column headerText="MANUFAC" style="width:20%">  
                        <h:outputText value="#{carr.manufacturer}" />  
                    </p:column>  
                </p:dataTable>
 </h:form>  
于 2013-04-16T01:23:40.553 回答