PrimeFaces数据表右键单击选择+行特定上下文菜单



我有一个简单的数据表,有3列,显示AccessCard实体。在一列中,我有一"状态",可以说是"INACTIVE"、"DELETED"等。显然,这些值是从backingbean派生的。

因此,如果说#{card.accessCard.flgDeleted} == true,则显示"INACTIVE"

在上下文菜单中,我有一个选项"Flag as Deleted",用于设置flgDeleted == false。如果flgDeleted == false,我不希望呈现删除选项。

使用我迄今为止实现的代码,当我用LEFT click选择行时,一切都正常。当我用RIGHT click选择一行并同时显示上下文菜单时,backingbean似乎没有更新。有趣的是,如果右键单击一行并选择"标记为已删除",一切都会很好。

<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>  

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

<p:ajax event="contextMenu" update=":MyComponent"/>

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

最新更新