如何在p:dataTable中通过ajax勾选SelectAll复选框时调用方法

时间:2015-09-30 16:08:18

标签: ajax jsf checkbox primefaces datatable

一旦我勾选了dataTable顶部的 SelectAll 复选框,我需要你的帮助来从支持bean调用方法。我可以调用方法 ShowTotal 一旦我勾选或取消勾选每个项目的复选框,但是当我从顶部勾选 SelectAll 复选框时,不会调用任何监听器。这是我的代码:

<p:dataTable id="PendingRequests" var="hr" selection="#{hrdirector.selectedRequests}"
             value="#{hrdirector.listPendingRequests}" rowKey="#{hr.requestNo}"
             filteredValue="#{hrdirector.filteredRequests}" widgetVar="dataTableWidgetVar">
  <p:ajax event="rowSelectCheckbox" listener="#{hrdirector.ShowTotal}" process="@this" 
          update=":form:PendingRequests:sum"/>

  <p:ajax event="rowUnselectCheckbox" listener="#{hrdirector.ShowTotal}" process="@this"
          update=":form:PendingRequests:sum"/>

        <p:column selectionMode="multiple" style="width:16px;text-align:center"></p:column>
        <p:column headerText="Request No.">
            <h:outputText value="#{hr.requestNo}"/>
        </p:column>
        <p:column headerText="Request Amount">
            <h:outputText value="#{hr.requestAmount}"/>
        </p:column>
    </p:dataTable>

    <h:outputText id="Sum" value="#{hr.Sum}"/>

我尝试在其选择的列中添加以下代码,但它给了我一个错误:

<p:column selectionMode="multiple" style="width:16px;text-align:center">
<p:ajax listener="#{hrdirector.ShowTotal}" />
</p:column>

1 个答案:

答案 0 :(得分:2)

精彩的PrimeFaces文档的第172页为您提供了答案。你需要的是所谓的toggleSelect事件。