Telson Alva
Telson Alva

Reputation: 862

Primefaces dataTable Sorting does not seem to work

I am having difficulties sorting a dynamic 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>

I am using a @SessionScoped bean where databaseSearch.customerList would query the database and populate the dataTable. When I click on the column name to sort, the sort arrow mark changes but the table contents do not sort.

I am using PF 3.4.2

Upvotes: 0

Views: 3006

Answers (1)

Serkan Arıkuşu
Serkan Arıkuşu

Reputation: 5609

If you are querying your database in your getCustomerList method in every request this will not work. You may try with a local variable

public class DatabaseSearch{

    private List<C> customerList;

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

Upvotes: 1

Related Questions