gpt4 book ai didi

jsf - Primefaces DataTable 的特定于列的上下文菜单

转载 作者:行者123 更新时间:2023-12-04 06:21:33 25 4
gpt4 key购买 nike

如何在 Primefaces 数据表中为每一列定义不同的上下文菜单?把 <p:contextMenu>里面 <p:column>不能正常工作。我希望上下文菜单根据用户右键单击的列而有所不同。

这不起作用(为所有列创建相同的上下文菜单):

<p:dataTable value="#{values}" var="value" selectionMode="single" selection="#{selectedValue}" id="table">
<p:column headerText="Col 1">
<h:outputText value="#{value.balance}">
<f:convertNumber type="currency"></f:convertNumber>
</h:outputText>
<p:contextMenu>
<p:menuitem value="Report"></p:menuitem>
<p:menuitem value="Change"></p:menuitem>
</p:contextMenu>
</p:column>
<p:column headerText="col 2" >
<h:outputText value="#{value.balance2}">
<f:convertNumber type="currency"></f:convertNumber>
</h:outputText>
<p:contextMenu>
<p:menuitem value="Something else"></p:menuitem>
</p:contextMenu>
</p:column>
</p:dataTable>

如何通过使用 PF 组件、扩展 PF 组件或添加自定义 JavaScript 在 Primefaces dataTable 中添加特定于列的上下文菜单?

最佳答案

你试过吗(我刚刚用 Primefaces 3.5 测试过):
ContextMenu 可以附加到任何 JSF 组件,primefaces 数据表中的每一行都有私有(private)和动态 id(例如::carList:0:test1 :carList:1:test1 ...),所以我认为你应该在列内使用 contextMenu:

                 <p:column headerText="Model">  
<p:panel id="test1">
<h:outputText value="#{carr.model}" />
<p:contextMenu for="test1" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search"
onclick="product.showCellEditor();return false;" />
<p:menuitem value="Hide Menu" icon="ui-icon-close"
onclick="cMenu.hide()" />
</p:contextMenu>
</p:panel>
</p:column>
<p:column headerText="MANUFAC" style="width:20%">
<p:panel id="test2">
<h:outputText value="#{carr.manufacturer}" />
<p:contextMenu for="test2" widgetVar="cMenu2">
<p:menuitem value="Edit Cell" icon="ui-icon-search"
onclick="product.showCellEditor();return false;" />
<p:menuitem value="Hide Menu" icon="ui-icon-close"
onclick="cMenu2.hide()" />
<p:menuitem value="Hide Menu" icon="ui-icon-close"
onclick="cMenu2.hide()" />
</p:contextMenu>
</p:panel>
</p:column>

如果要指定行:
<p:column headerText="Model" style="width:30%">  
<p:panel id="test1">
<h:outputText value="#{carr.model}" />
<p:contextMenu rendered="#{carr.model eq 'SENT'}" for="test1" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search"
onclick="product.showCellEditor();return false;" />
<p:menuitem value="Hide Menu" icon="ui-icon-close"
onclick="cMenu.hide()" />
</p:contextMenu>
<p:contextMenu rendered="#{carr.model eq 'WAITING'}" for="test1" widgetVar="cMenu3">

<p:menuitem value="Hide Menu" icon="ui-icon-close"
onclick="cMenu3.hide()" />
</p:contextMenu>
</p:panel>
</p:column>

关于jsf - Primefaces DataTable 的特定于列的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14635003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com