完成过滤表结束后调用backbean方法

时间:2013-04-15 20:11:53

标签: jsf-2 primefaces

在完成对表结束过滤后调用backbean方法。使用 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"不起作用,因为在过滤时并非完成。

1 个答案:

答案 0 :(得分:0)

你可以:在filter事件中,你在oncomplete或onsuccess中调用JavaScript函数(它取决于你的目标),JavaScript函数会触发click事件到commandbutton,然后你把你想要的动作代码放到那个命令按钮:

<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>