2016-03-08 2 views
0

У меня есть требование, когда я использую rowExpension внутри datatable. , который открывает другую таблицу (подтаблицу). Ниже подкатегории У меня есть одна кнопка редактирования. после нажатия кнопки «Редактировать» открывает диалог модели, и как только я нажимаю «Сохранить», он закрывает диалог, но я не могу найти способ обновить эту конкретную подтаблицу.PrimeFaces обновляет одну строку данных из диалога

Ниже приведен фрагмент кода подтаблицы & диалог. Может ли кто-нибудь предложить мне способ обновить конкретную подтаблицу, для которой нажата кнопка редактирования.

<p:rowExpansion id="partyRows"> 
           <p:dataTable 
            var="party" 
            value="#{pocAccountBean.parties}" 
            rows="20" 
            id="test" 
            widgetVar="partyTable" 
            resizableColumns="true" 
            emptyMessage="No associated parties found." 
            rowIndexVar="idx" 
            styleClass="testClass_#{account.accountNbr}"> 

            <p:column headerText="Party Name" sortBy="#{party.partyKey}"> 
             <h:outputText value="#{party.partyKey}" /> 
            </p:column> 

            <p:column headerText="Party Type" sortBy="#{party.partyType}"> 
             <h:outputText value="#{party.partyType}" /> 
            </p:column> 

            <p:column headerText="Agent Code" sortBy="#{party.agentCode}"> 
             <h:outputText value="#{party.agentCode}"/> 
            </p:column> 

            <p:column headerText="Party Status" sortBy="#{party.partyStatus}"> 
             <h:outputText value="#{party.partyStatus}" /> 
            </p:column> 

            <p:column headerText="Education Level" sortBy="#{party.educationLevel}"> 
             <h:outputText value="#{party.educationLevel}" /> 
            </p:column> 

            <p:column headerText="Current Date" sortBy="#{party.currentDate}"> 
             <h:outputText value="#{party.currentDate}" /> 
            </p:column> 

          </p:dataTable> 

          <h:panelGrid columns="1" cellpadding="5" border="0"> 
           <p:commandButton value="Edit" type="button" onclick="PF('dlg2').show();"/> 
          </h:panelGrid> 

          <p:dialog header="Terms" widgetVar="dlg2" modal="true" height="400" width="800" id="d1" dynamic="true"> 
           <h:inputText value="#{pocAccountBean.agentCode}" /> 
           <p:commandButton action="#{pocAccountBean.setAgentCodeInParties()}" value="Save" onclick="PF('dlg2').hide();" update="@(.testClass_#{account.accountNbr})"></p:commandButton> 
          </p:dialog> 

         </p:rowExpansion> 
+0

Я попытался с помощью селектора CSS в обновлении атрибут, но похоже, что в первичности динамическое значение атрибута обновления не поддерживается. –

+0

обходным путем было бы использовать c: foreach, где вы можете дать динамические идентификаторы. Таким образом, вы можете обновить идентификатор пользователя. Вы не можете использовать селектор css для обновления. – Lule

+0

Укажите, пожалуйста, вашу версию PF. (всегда, а также JSF impl и версия). – Kukeltje

ответ

0
RequestContext.getCurrentInstance().update("form:something:" + index + "something"); 

Это то, что работает для меня. Атрибут "update" не принимает значение выражения времени выполнения.

0

Для обновления определенной строки в DataTable, вы можете использовать RequestContext обновить определенный компонент, поэтому удалить выражение обновления из вашего CommandButton, и добавьте в ваш метод setAgentCodeInParties:

RequestContext.getCurrentInstance().update(
    s.getClientId(FacesContext.getCurrentInstance()) 
    + ":" + event.getRowIndex() 
    + ":***" 
);