fluminis
fluminis

Reputation: 4039

How to refresh a row in Primefaces?

In a Primefaces <p:dataTable>, on each row, I have a column containing a commandButton. This commandButton update a value of the bean corresponding to the current row.

How to refresh the current row where I have just clicked so that the reader column will refresh?

<p:dataTable id="repositoryBean" 
    currentPageReportTemplate="Total : {totalRecords}"
    lazy="true"
    resizableColumns="false"
    rows="200" 
    rowsPerPageTemplate="10,15,20"
    sortBy="#{row.name}"
    sortOrder="ascending"
    style="margin:20px 0px;"
    value="#{repositoryBean.users}"
    var="row"
    styleClass="small-datatable"
    editable="true"
   >
    <p:ajax event="rowSelect" listener="#{repositoryBean.onDisplay}"
        onstart="PF('loading').show()"
    /> 

    <p:column headerText="#{label.cvs_repo_user_firstname}" sortBy="#{row.firstname}" sortOrder="ascending">
        <h:outputText value="#{row.firstname}" />
    </p:column>
    <p:column headerText="#{label.cvs_repo_user_is_reader}" sortBy="#{row.reader}" sortOrder="ascending">
        <h:outputText value="#{row.reader}" />
    </p:column>

    <p:column headerText="#{label.cvs_repo_user_action}" style="text-align:center" >
        <p:commandButton
            value="Reader"
            styleClass="btn-off"
            action="#{repositoryBean.onSetReader(row)}"
            />
    </p:column>
</p:dataTable>

Upvotes: 0

Views: 579

Answers (1)

Kukeltje
Kukeltje

Reputation: 12337

Use the Omnifaces utility library for this. It has 'Ajax' functionality to update rows of a datatable and even has a specific PrimeFaces example.

It works like:

Ajax.updateRow(table, index);

where table is the reference to the component (not id!, but via binding) and index is the row index.

Upvotes: 2

Related Questions