启用禁用数据表中的复选框

时间:2012-03-14 12:56:00

标签: java-ee primefaces xhtml

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中的值来呈现复选框。

3 个答案:

答案 0 :(得分:9)

许多年后FWIW ......

在PF 5.x中,您知道在列中执行此操作的时间更长,您必须在disabledSelection标记中设置<p:datatable ...>条件。

类似的东西:

<p:datatable disabledSelection="#{myvar ne null}" ... >

我花了很多时间才弄清楚,因为经常提出问题(无处不在),无论版本如何。这是我终于找到答案的地方。

Optimus Prime's response on PF Community Forum

答案 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);
    });
});