Primefaces复杂数据表过滤和排序

时间:2013-12-06 12:29:11

标签: sorting jsf primefaces datatable

我正在使用一个复杂的数据表,可以使用各种过滤器进行排序和过滤。我的问题是当我尝试使用列过滤器,全局过滤器或排序数据表分页突然下降到1页,它不会转回到分页的第一个状态。一开始我有92页,但过滤/排序后,它成为一个1页的数据表,即使我清除了过滤器的文本框,它仍保持为1页。

这是我的数据表:

<h:panelGroup rendered="#{projectsController.items.rowCount > 0}">
<p:growl id="growl" />  
<p:dataTable id="datatable" value="#{projectsController.items}" var="item" filterEvent="keyup" 
             paginator="true" rows="5" emptyMessage="Proje bulunamadı." paginatorPosition="bottom"  
             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
             rowsPerPageTemplate="4,5,6,7,8,9,10" 
             filteredValue="#{projectsController.filteredProjects}" style="font-size:11px;font-weight: bold;"  widgetVar="proj" >

    <f:facet name="header">  
       <p:outputPanel>  
          <h:outputText value="Tüm Alanlarda Ara:  " />  
          <p:inputText id="globalFilter" onkeyup="proj.filter();" style="width:150px" />  
       </p:outputPanel>  
    </f:facet> 


    <p:column id="c1" headerText="Proje Adı" width="500" filterStyle="display:none" styleClass="wrap" sortBy="#{item.projectname}" filterBy="#{item.projectname}" filterMatchMode="contains" >
       <h:outputText value="#{item.projectname}"/>
    </p:column>

    <p:column headerText="İlçe" width="150" styleClass="wrap" filterStyle="display:none" filterBy="#{item.district}" sortBy="#{item.district}" filterOptions="#{populator.districtsDD}" filterMatchMode="exact">
        <h:outputText value="#{item.district}"/>
    </p:column>

    <p:column headerText="Sektör" width="150" styleClass="wrap" filterStyle="display:none" filterBy="#{item.sector}" sortBy="#{item.sector}" filterOptions="#{populator.sectorsDD}" filterMatchMode="exact">
        <h:outputText value="#{item.sector}"/>
    </p:column>

    <p:column headerText="Başlangıç Tarihi" width="150" styleClass="wrap" filterStyle="display:none" sortBy="#{item.startdate}" filterBy="#{item.startdate}" filterMatchMode="contains">
        <h:outputText value="#{item.startdate}"/>
    </p:column>

    <p:column headerText="Bitiş Tarihi" width="150" styleClass="wrap" filterStyle="display:none" sortBy="#{item.enddate}" filterBy="#{item.enddate}" filterMatchMode="contains">
        <h:outputText value="#{item.enddate}"/>
    </p:column>

    <p:column headerText="İş Durumu" width="150" styleClass="wrap" filterStyle="display:none" sortBy="#{item.workstatus}" filterBy="#{item.workstatus}" filterMatchMode="contains">
        <h:outputText value="#{item.workstatus}"/>
    </p:column>

    <p:column>
        <p:commandButton id="selectButton" update=":display" oncomplete="carDialog.show()" icon="ui-icon-search" title="Detayları Gör">  
           <f:setPropertyActionListener value="#{item}" target="#{projectsController.selectedP}" />
           <p:ajax event="click" update=":viewTabs:tabView:mapTab"/>
        </p:commandButton>
        <p:commandButton id="editButton" update=":displayEdit" oncomplete="editDialog.show()" icon="ui-icon-pencil" title="Düzenle">  
           <f:setPropertyActionListener value="#{item}" target="#{projectsController.selectedP}" />
         </p:commandButton>
         <p:commandButton update="growl" title="Projeyi Sil" id="confirm" action="#{projectsController.destroy}" icon="ui-icon-trash" ajax="false" onclick="if (!confirm('Bu projeyi gerçekten silmek istiyor musunuz?'))
                                            return false;"/>  
      </p:column>
</p:dataTable>

过滤或排序后如何将数据表重置为第一状态?提前谢谢。

Primefaces 3.5,Oracle WebLogic 10g,JSF 2.2

以下是快照:

![在此处输入图片说明] [1]

1 个答案:

答案 0 :(得分:1)

对于那些想要了解解决方案的人,我已经从库中删除了jsf-api.jar和jsf-impl.jar,而我已经把netbeans自己的jsf2.1库。基本上我已降级为jsf2.1。我只是怀疑jsf-api和jsf-impl是否给了我jsf2.2的支持。

希望这对某人有帮助。