roo*_*kit 8 datatable jsf contextmenu primefaces jsf-2
如何在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>
Run Code Online (Sandbox Code Playgroud)
如何通过使用PF组件,扩展PF组件或添加自定义JavaScript在Primefaces dataTable中添加特定于列的上下文菜单?
您是否尝试过(我刚刚使用Primefaces 3.5测试过):ContextMenu可以附加到任何JSF组件,primefaces datatable中的每一行都有私有和动态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>
Run Code Online (Sandbox Code Playgroud)
如果要指定行:
<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>
Run Code Online (Sandbox Code Playgroud)
可选的 for 属性定义 contextMenu 附加到哪个组件。当for未定义时,contextMenu附加到页面的意思,右键单击页面上的任意位置将显示菜单。
这就是Primefaces 文档对contextMenu
标签的描述。因此,按照您的方式,它附加到页面含义上。使用for属性,您将能够与 Primefaces 组件集成,但可能无法与特定的表列集成。
另外,Datatable
文档表明您只能在对表进行选择时执行此操作,因为它似乎有特殊的方法来使其适应树节点。
不过,我强烈建议您在询问之前先查看文档。
归档时间: |
|
查看次数: |
6937 次 |
最近记录: |