根据行条件隐藏p:dataTable选择复选框

6

我已经实现了org.primefaces.model.SelectableDataModel

现在,当基于SelectableDataModel渲染我的<p:dataTable>时,我使用以下方式添加了一个复选框列:

<p:column selectionMode="multiple" /> 

对于某些行,基于行的某些属性,我不想出现复选框。

我无法找到一种方法来实现这一点。是否可以在Prime Faces功能之外实现?

4个回答

7
我建议使用以下内容:
<p:dataTable disabledSelection="#{car.color =='Black'}" ... >

对于我来说,使用PF 5.1可以正常工作,无需操作列样式类。


7
您可以禁用复选框:
<p:column selectionMode="multiple" style="width:18px" 
   disabledSelection="#{car.color =='Black'}" 
   styleClass="#{car.color =='Black' ? 'selectionDisabled':''}"/>

复选框现在已被禁用,但仍可见。使用CSS隐藏已禁用的复选框:
td.selectionDisabled .ui-chkbox{
display: none;
}

0

我可以确认,在dataTable上放置disabledSelection属性对于primefaces 6.1是有效的,就像user4165984所说的那样。

<p:dataTable disabledSelection="#{car.color =='Black'}" ... >

或者

<p:dataTable disabledSelection="#{car.disabled}" ... >

只有在想要添加一些花哨的 CSS 魔法以执行更多操作而不仅仅是禁用时,才需要设置样式类。


-1

从Primefaces 5.2开始,由maciek和planetjones建议的p:column的disabledSelection属性不会禁用复选框。

应该像user4165984建议的那样将disabledSelection属性插入到p:datatable标记中,或者如此处所述。


1
请在回答时更加清晰明了,这有助于问题提出者理解您的建议。详见http://stackoverflow.com/help/how-to-answer。 - Liju Thomas
请解释一下我的回答哪里不清楚。我建议用户直接使用<p:dataTable disabledselection="#{car.color=='Black'}"../>,而不是上面得到最多赞和被接受的答案。 - Raj.K
然后评论并点赞其他答案。无需创建额外的答案。 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接