2015-05-08 2 views
3

Как я могу обновить одну строку в p: datatable при использовании AJAX?Обновление одной строки в JSF/Primefaces datatable с использованием AJAX

Я не хочу, чтобы обновить весь DataTable, потому что она имеет много строк, и он собирается занять некоторое время ..

Мой макет:

<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 = «оформление» и т. д., но это, похоже, не работает.

Я использую JSF 2.1 и Primefaces 5,2

+0

Возможный дубликат [Как обновить конкретную строку в DataTable Primefaces] (http://stackoverflow.com/questions/15257554/how-to-update-specific-row- in-primefaces-datatable) – Bob

ответ

0

Либо использовать «АЯКС» функциональность утилиты библиотеки как OmniFaces или быть творческим с PrimeFaces Selectors.

В обоих случаях вам необходимо получить доступ к, например, 'current' row или rowId. Но поскольку у вас есть кнопки в строке, это не должно быть проблемой. У меня, к сожалению, нет времени для создания примеров для вас

+0

Я ограничен PrimeFaces. И хорошо .. проблема заключается в том, что «выбирая эту текущую строку» для обновления – GregD

3

Вы можете использовать выражение поиска @row(n), которое делает именно это - оно обновляет n-я строка в таблице. Чтобы обновить текущую строку, вам необходимо передать индекс строки в качестве аргумента. Установите rowIndexVar="rowIdx" атрибут <p:dataTable>, а затем:

<p:commandButton ... update="@form:visitTable:@row(#{rowIdx})" /> 
Смежные вопросы