Primefaces中是否有办法启用或禁用数据表中的复选框?现在我的数据表是这样的:
<p:dataTable id="dTable" var="tt" value="#{aBean.aList}" selection="#{aBean.selectedValue}" rowStyleClass="#{tt.state.intValue() le 1 ? 'active' : 'passive'}">
<p:column selectionMode="multiple" />
...
</dataTable>
但是这段代码只是将带有复选框的列与标题中的复选框放在一起。我希望根据辅助bean中的值来呈现复选框。
答案 0 :(得分:9)
在PF 5.x中,您知道在列中执行此操作的时间更长,您必须在disabledSelection
标记中设置<p:datatable ...>
条件。
类似的东西:
<p:datatable disabledSelection="#{myvar ne null}" ... >
我花了很多时间才弄清楚,因为经常提出问题(无处不在),无论版本如何。这是我终于找到答案的地方。
答案 1 :(得分:6)
我在PF中找到了解决方案:http://forum.primefaces.org/viewtopic.php?f=3&t=14029 使用rowstyleclass和css解决了这个问题:
XHTML:
<p:dataTable id="dTable" var="tt" value="#{aBean.aList}"
selection="#{aBean.selectedValue}" rowStyleClass="#{tt.state.intValue() le 1 ? 'active' : 'passive'}">
<p:column selectionMode="multiple"/>
...
</dataTable>
的CSS:
.active{
background-image: none !important;
}
.passive{
background-color:gainsboro !important;
background-image: none !important;
}
.passive td.ui-selection-column input {
display:none;
}
这使用CSS启用/禁用命令按钮。
答案 2 :(得分:2)
试用disabledSelection
<p:column
你总是可以在没有它的情况下完成它,只需手动完成......放置即可
您可以使用
rowIndexVar:引用每个行索引的迭代器名称。
用于引用行号
以下是选择列的外观(或多或少)
使用checkall
类以便稍后使用jQuery委托它并执行select all magic
<p:column id="selection_column">
<f:facet name="header">
<h:selectBooleanCheckbox value="" class="checkall"/>
</f:facet>
<h:selectBooleanCheckbox rendered="#{myRow.selectable}" value="#{myRow.selected}"/>
</p:column>
jQuery(window).load(function() {
jQuery(document).delegate(".checkall", "click", function(event) {
jQuery(this).closest("table").find(':checkbox').attr('checked', this.checked);
});
});