2

我有一个包含 3 列的简单数据表,显示 AccessCard 实体在一列中我有一个“状态”,可以说是“未激活”、“已删除”等。显然这些值是从支持 bean 派生的。

因此,如果让我们说#{card.accessCard.flgDeleted} == true,则显示“不活跃”

在上下文菜单中,我有一个选项“标记为已删除”,它设置flgDeleted == false. 我不希望在flgDeleted == false.

使用到目前为止我已经实现的代码,当我用左键选择行时,一切正常。当我使用 RIGHT 单击选择一行并同时显示上下文菜单时,支持 bean 似乎没有更新。有趣的是,如果右键单击一行并实际选择让我们说标记为已删除,则一切正常。

<p:contextMenu id="contextMenu" for="cardTable">

            <p:menuitem value="View Card History" icon="ui-icon-search"/>


            <p:menuitem value="Flag as Deleted" icon="ui-icon-trash"
                process="@form" update="@form" oncomplete="dlgDeleteCard.show()"
                rendered="#{!card.accessCard.flgDeleted}" />
</p:contextMenu>



<h:panelGrid style="width:500px;">

            <p:dataTable var="pc" id="cardTable" widgetVar="cardTable"
                value="#{card.accessCardList}" 
                 selectionMode="single" selection="#{card.accessCard}" 
                 rowKey="#{pc.cardId}">

                <p:ajax event="rowSelect" listener="#{card.onRowSelect}"
                    update="@form :messages" />

                <p:column id="cardId" width="20%" headerText="Card Id">
                    <h:outputText value="#{pc.cardId}" />
                </p:column>

                <p:column id="cardHolderName" width="50%"
                    headerText="Current Holder">
                    <h:outputText value="#{pc.currentHolder}" />
                </p:column>

                <p:column id="cardStatus" width="10%" headerText="Status">
                     #{card.getCardStatus(pc)}
                </p:column>


            </p:dataTable>
</h:panelGrid>  
4

2 回答 2

8

如果有人仍然需要它,请使用:

<p:ajax event="contextMenu" update=":MyComponent"/>
于 2013-10-14T13:05:43.460 回答
0

我有类似的问题,我通过在 dataTable 之后移动 panelGrid 中的 contextMenu 来解决,然后我不需要任何 javascript hack。

于 2018-06-28T14:06:08.387 回答