如何以编程方式取消选中(取消选中)数据表列中的复选框?

时间:2012-12-21 17:21:40

标签: java-ee jsf-2 primefaces

我对如何在primefaces中以编程方式启用/禁用复选框有疑问。 我想通过java代码控制列复选框的启用/禁用状态,如果可能的话。 有人可以帮帮我吗?

这是我的代码:

<p:dataTable id="table" var="some" value="#{someManager.someDataModel}"  
                     selection="#{someManager.chooseSomethings}">

            <p:column binding="#{someManager.columnCheckBox}" selectionMode="multiple"/>
            <p:column>
                <h:outputText value="#{some.nameOfTheSomething}"/>
            </p:column> 
        </p:dataTable> 

当我点击数据表的复选框时,所选数据将显示在下面的数据表中:

<p:dataList id="selectedDataList"
         value="#{someManager.chooseSomethings}" 
         var="c" rowIndexVar="i">
           <h:outputText id="choseSomeElement" value="#{c.nameOfTheSomething}"/>
           <p:commandLink value="x" process="@this" update=":form:selectedDataList" actionListener="#{userManager.remove}"/>
</p:dataList>

在此选择列表中,我可以删除单击“X”commandLink中的任何元素。此commandLink从chooseSomethings List中删除数据。当它发生时,我想再次取消选择(禁用)数据表中的corespondent元素的复选框(恢复初始状态)。

有可能吗?感谢。

1 个答案:

答案 0 :(得分:1)

primefaces同步了两个列表。 从chooseSomethings中删除数据时,数据表将显示未选中的复选框。 在这种情况下,您只需将datatable的id放在dataList的update属性中。 像这样:

<p:dataTable id="table" var="some" value="#{someManager.someDataModel}"  
                 selection="#{someManager.chooseSomethings}">

        <p:column binding="#{someManager.columnCheckBox}" selectionMode="multiple"/>
        <p:column>
            <h:outputText value="#{some.nameOfTheSomething}"/>
        </p:column> 
    </p:dataTable> 

<p:dataList id="selectedDataList"
     value="#{someManager.chooseSomethings}" 
     var="c" rowIndexVar="i">
       <h:outputText id="choseSomeElement" value="#{c.nameOfTheSomething}"/>
       <p:commandLink value="x" process="@this" update=":form:selectedDataList,:form:table" actionListener="#{userManager.remove}"/>