【问题标题】:select all in datatable jsf primefaces在数据表 jsf primefaces 中全选
【发布时间】:2014-05-22 19:39:00
【问题描述】:

我正在尝试创建一个全选按钮或复选框,单击该按钮或复选框将选中所有 selectbooleanCheck 框。没有直接简单的方法吗?我开始创建选择复选框,当更改 selectAll 时。谢谢

 <p:dataTable value="#{illRequestModel.list}"  
                        var="illRequestRecord" width="100%" styleClass="request-table"
                        rows="10" paginator="true" id="requestGrid" 
                        currentPageReportTemplate="Viewing Page {currentPage}"
                        paginatorTemplate="{CurrentPageReport}   {PageLinks}  "
                        paginatorPosition="bottom">
                        <p:column >
                        <f:facet name="header">
                                <h:selectBooleanCheckbox id="checkbox2" title="emailUpdates2" onchange="CheckAll()" > 

                                </h:selectBooleanCheckbox>
                            </f:facet>
                            <h:selectBooleanCheckbox id="checkbox" title="emailUpdates"
                                value="#{illRequestRecord.selected}"
                                onchange="addNumber(#{illRequestRecord.localRequestId})"> 
                                <f:ajax listener="#{illRequestRecord.selectmethod}" />
                                </h:selectBooleanCheckbox>
                        </p:column>
                        <p:column id="localRequestIdCol"
                            sortBy="#{illRequestRecord.localRequestId}">
                            <f:facet name="header">
                                <h:outputText value="ID" />
                            </f:facet>
                            <h:commandLink value="#{illRequestRecord.localRequestId}"
                                action="#{requestListController.displaySingleRecord}">
                                <f:param name="selectedItemId"
                                    value="#{illRequestRecord.localRequestId}"></f:param>
                            </h:commandLink>
                        </p:column>

【问题讨论】:

    标签: jsf primefaces datatable


    【解决方案1】:

    你为什么不使用与PrimeFaces DataTable showcase 相同的多选datatable 如您所见:

     <p:dataTable id="multiCars" var="car" value="#{tableBean.mediumCarsModel}" paginator="true" rows="10" selection="#{tableBean.selectedCars}">
    

    它将自动添加检查所有功能。 如果您想要一个外部复选框来检查所有,您可以执行以下操作。 给你的数据表一个widgetVar,我们称之为dataTableWV

     <p:dataTable widgetVar="dataTableWV" id="multiCars" var="car" value="#{tableBean.mediumCarsModel}" paginator="true" rows="10" selection="#{tableBean.selectedCars}">  
    

    你有一个复选框:

     <input id="checkAll" type="checkbox" />
    

    你可以像下面这样注册一个点击事件:

     <script>
          $(document).ready(function() {
              $('#checkAll').on('click', function() {
                   //selects all records on the displayed page if pagination is supported.
                   dataTableWV.selectAllRowsOnPage();
    
                   //or you can select all the rows across all pages.
                   dataTableWV.selectAllRows();
              });
          });
     </script>
    

    【讨论】:

    • 感谢 Qussay 为我指明了正确的方向
    【解决方案2】:
    <p:dataTable widgetVar="dataTableWV" id="multiCars" var="car" value="#{tableBean.mediumCarsModel}" paginator="true" rows="10" selection="#{tableBean.selectedCars}">
      <f:facet name="header">
          <p:commandButton value="select" onclick="PF('dataTableWV').selectAllRows()" />
          <p:commandButton value="unselect" onclick="PF('dataTableWV').unselectAllRows()" />
      </f:facet>
    </p:dataTable>
    

    【讨论】:

      【解决方案3】:
      Sample Code:-
      
      **JAVA (your backing bean class)
      ==============================**
      //Stores the checked items from data table.
      private List<String> selectedIds = new ArrayList<>();
      
      private List<String> getSomeList() {
      // return list of strings to data table
        return someList;
      }
      
      public void selectAllCheckboxes(ToggleSelectEvent event) {
      if (selectedIds != null)  {
          selectedIds.clear();
          if (event.isSelected()) {
              selectedIds.addAll(someList); //Add all the elements from getSomeList()
          }
       }
      }
      
      **XHTML
      =====**
      
      <p:dataTable id="data-table-id" value="#{backingBean.someList}"
      selection="#{backingBean.selectedIds}" rowKey="#{id}" var="id"                   
      paginator="true" rows="10" paginatorPosition="bottom"
      paginatorAlwaysVisible="false" rowSelectMode="checkbox"
      rowsPerPageTemplate="10,20,30,50">
      
      <p:column selectionMode="multiple" />
      <p:ajax event="toggleSelect" 
      update="@this"listener="#backingBean.selectAllCheckboxes}"/>
      
      </p:dataTable>
      

      【讨论】:

      • 并添加一些关于为什么以及如何解决问题的文本代码可能并不适合所有人
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2013-02-06
      • 1970-01-01
      • 2012-07-21
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多