仅在手风琴Primefaces选项卡上更新 [英] Update just on Tab of accordion Primefaces
问题描述
我手风琴的标签数是动态的.选项卡标题将设置为CSS类.这将使背景醚变为绿色或红色,具体取决于订单中是否提供了所有物品.
I have an accordion with a dynamic number of tabs. The tab title gets set to a CSS class. This makes the background ether green or red, depending on if all the articles in the order are delivered.
每篇文章都有一个selectBooleanButton,对这些按钮的每次更改都应更新实际标签.
For every article there is a selectBooleanButton and on every change of these buttons the actual tab should get updated.
问题是:如何仅更新一个标签?当我更新整个手风琴时,第一个选项卡打开,另一个选项卡关闭.
The problem is: how can I update just one tab? When I update the whole accordion the first tab opens and the other get closed.
<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>
推荐答案
AccordionPanel具有activeIndex属性,可用于在当前选项卡上工作.您应该可以执行以下操作:
The AccordionPanel has an activeIndex attribute which you can use to work on the current tab. You should be able to do something like this:
<p:ajax listener="#{ordersBean.saveDelivered(demand)}" update=":allOrder:ordersAccordion:tab#{ordersAccordion.activeIndex}" />
这篇关于仅在手风琴Primefaces选项卡上更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!