2013-07-25 59 views
3

我有一個帶有動態數量標籤的手風琴。標籤標題被設置爲一個CSS類。這會使背景色成綠色或紅色,具體取決於是否交付訂單中的所有商品。只更新手風琴的標籤Primefaces

對於每篇文章都有一個selectBooleanButton,並且對這些按鈕的每次更改都應該更新實際的選項卡。

問題是:如何更新只是一個選項卡?當我更新整個手風琴時,第一個標籤打開,另一個關閉。

<p:accordionPanel id="ordersAccordion" cache="true" value="#{ordersBean.orders}" var="order"> 
     <p:tab 
      titleStyleClass="#{ordersBean.isOrderDelivered(order) ? 'ui-accordion-tab-delivered' : 'ui-accordion-tab-undelivered'}" 
      title="##{order.order_id} | #{order.printableOrderDate} | #{order.printableOrderTime} | #{order.user} | #{order.getDestination().toString()}"> 
      <p:dataTable value="#{order.demands}" var="demand"> 
       <p:column headerText="Artikel Nr."> 
        <p:outputLabel value="#{demand.article.articleNumber}" /> 
       </p:column> 
       <p:column headerText="Name"> 
        <p:outputLabel value="#{demand.article.name}" /> 
       </p:column> 
       <p:column headerText="Beschreibung"> 
        <p:outputLabel value="#{demand.article.description}" /> 
       </p:column> 
       <p:column headerText="Haus"> 
        <p:outputLabel value="#{demand.house.getLabel()}" /> 
       </p:column> 
       <p:column headerText="Anzahl"> 
        <p:outputLabel value="#{demand.quantity}" /> 
       </p:column> 
       <p:column headerText="Mitarbeiter"> 
        <p:outputLabel value="#{demand.employee}" /> 
       </p:column> 
       <p:column headerText="Lieferstand" width="150" style="text-align: center"> 
        <p:selectBooleanButton id="deliverdBtn" value="#{demand.delivered}" onLabel="Geliefert" offLabel="Geliefert" onIcon="ui-icon-check" 
         offIcon="ui-icon-close"> 
         <p:ajax listener="#{ordersBean.saveDelivered(demand)}" update=":allOrders:ordersAccordion" /> 
        </p:selectBooleanButton> 
       </p:column> 
      </p:dataTable> 
     </p:tab> 
</p:accordionPanel> 
+0

處理同樣的問題:http://stackoverflow.com/questions/31460044/how-to-ajax-update-components-in-single-tab -of-paccordion面板 - 從外部 – amphibient

回答

1

的AccordionPanel有,你可以使用當前選項卡上工作的activeIndex屬性。你應該能夠做這樣的事情:這裏

<p:ajax listener="#{ordersBean.saveDelivered(demand)}" update=":allOrder:ordersAccordion:tab#{ordersAccordion.activeIndex}" /> 
+0

如果選項卡未激活(當所有選項卡處於非活動狀態時),都會給出錯誤。所以此解決方案不夠用 – erginduran

+0

此答案在ajax元素位於選項卡內的情況下給出,這意味着該選項卡必須已被激活/打開。這不是從外部更新標籤的解決方案 –