2013-08-02 33 views
0

我有困难排序动态的dataTablePrimefaces dataTable的排序似乎并不工作

的dataTable

<h:form prependId="false" id="Main_Form"> 
    <p:dataTable id="dataTable" var="c" value="#{databaseSearch.customerList}" 
     paginator="true" rows="10" paginatorAlwaysVisible="false" 
     paginatorTemplate="Page {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} Rows per page {RowsPerPageDropdown}" 
     rowsPerPageTemplate="5,10,15,30" draggableColumns="True"> 
     <p:column sortBy="#{c.machine}" headerText="Machine"> 
      <h:outputText value="#{c.machine}" /> 
     </p:column> 
     <p:column sortBy="#{c.company}" headerText="Company"> 
      <h:outputText value="#{c.company}" /> 
     </p:column> 
     <p:column sortBy="#{c.contact}" headerText="Contact"> 
      <h:outputText value="#{c.contact}" /> 
     </p:column> 
     <p:column sortBy="#{c.phone}" headerText="Phone"> 
      <h:outputText value="#{c.phone}" /> 
     </p:column> 
     <p:column sortBy="#{c.email}" headerText="Email"> 
      <h:outputText value="#{c.email}" /> 
     </p:column> 
     <p:column exportable="false" headerText="Modify"> 
      <center> 
       <p:commandButton id="basic" value="Update" 
        action="#{updateEntry.setMachine(c.machine)}" 
        oncomplete="dlg1.show();" 
        styleClass="ui-Machinebutton" update=":Update_Entry"/> 
       <p:tooltip for="basic" value="Update/Delete Database Entry" 
        showEffect="fade" hideEffect="fade" /> 
      </center> 
     </p:column> 
    </p:dataTable> 
</h:form> 

我使用的是@SessionScoped豆其中databaseSearch.customerList将查询数据库并填充数据表。当我点击列名进行排序时,排序箭头标记会更改,但表内容不会排序。

我使用PF 3.4.2

+0

这看起来像http://stackoverflow.com/questions/5020725/sorting-is-not-working-in-datatable-in-primefaces的重复尝试 – RJA

回答

1

如果您在每次请求这是不行的查询数据库中的getCustomerList方法。你可以用一个局部变量

public class DatabaseSearch{ 

    private List<C> customerList; 

    public List<C> getCustomerList() { 
     if (customerList == null) 
      customerList = dao.getcustomerList(); 
     return customerList ; 
    } 
}