2012-12-21 55 views
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列表中刪除數據。當它發生時,我想再次取消選擇(禁用)數據表中的corespondent元素的複選框(恢復初始狀態)。

可能嗎?謝謝。

+1

你真的要啓用/禁用的複選框在'',還是你真正的意思是檢查/取消選中複選框,如'?檢查/取消檢查畢竟簡單得多。 – BalusC

+0

我修改了我的問題。謝謝。 –

+0

對不起,我想以編程方式取消選中該複選框。可以做到嗎? –

回答

1

該primefaces同步兩個列表。 當您從chooseSomethings中刪除數據時,數據表將不顯示覆選框。 在這種情況下,您只需將dataatable的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}"/>