1

我对如何在 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 列表中删除数据。当它发生时,我想再次取消选择(禁用)数据表中对应元素的复选框(恢复初始状态)。

可能吗?谢谢。

4

1 回答 1

1

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

<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}"/>

于 2013-03-25T21:57:15.787 回答