2015-05-08 97 views
3

如何在使用AJAX時更新p:datatable中的單行?使用AJAX更新JSF/Primefaces數據表中的單行

我不想更新整個數據表,因爲它有很多行,並且這將需要一些時間..

我的佈局:

<h:form id="visitForm"> 
     <p:dataTable id="visitTable" var="visit" value="#{visitBean.findAllVisits()}"> 

      <p:column headerText="${msgs['email']}" 
       <h:outputText value="#{visit.contactDetail.email}"/> 
      </p:column> 

      <p:column headerText="${msgs['clearance']}" id="clearance"> 
       <p:commandButton value="${msgs['clearance.ok']}" actionListener="#{visitBean.makeClearanceNotOk(visit)}"/> 
      </p:column> 
     </p:dataTable> 
    </h:form> 

我已經試過了一些像update =「clearance」等東西,但它似乎並沒有工作。

我使用JSF 2.1和5.2 Primefaces

+0

的可能的複製[如何更新Primefaces數據表中特定行(http://stackoverflow.com/questions/15257554/how-to-update-specific-row- in-primefaces-datatable) – Bob

回答

0

要麼使用一個實用程序庫的「AJAX」功能,例如OmniFaces或創意與PrimeFaces Selectors

在這兩種情況下,您都需要訪問'當前'行或rowId。但既然你有行中的按鈕,這應該不成問題。我很遺憾沒有時間爲您創建示例

+0

我只限於PrimeFaces。還有,問題是「選擇當前行」來更新 – GregD

3

您可以使用@row(n)搜索表達式來做到這一點 - 它會更新表中的第n行。爲了更新當前行,您需要傳遞行索引作爲參數。設置rowIndexVar="rowIdx"屬性上<p:dataTable>然後:

<p:commandButton ... update="@form:visitTable:@row(#{rowIdx})" />