2013-06-12 57 views
0

這裏是我的代碼: 當我試圖點擊我的選擇框所有的子選擇框需要選擇,當我取消選擇框的所有其子選框需要Unselectable.i嘗試跟隨way..but沒有得到確切的輸出。任何一個幫助?選擇所有複選框不能正常工作

<ace:dataTable> 
    <ace:column> 
    <f:facet name="header" > 
    <ice:selectBooleanCheckbox partialSubmit="true" value="#{maintainDocumentController.selectAll}" 
    valueChangeListener="#{maintainDocumentController.toggleSelectAll}"/> 
    </f:facet> 
    <div align="center"> 
    <ice:selectBooleanCheckbox value="#{row.selected}" 
    partialSubmit="true" 
    valueChangeListener="#{maintainDocumentController.uncheckAllSelected}" /></div> 
    </ace:column> 
    </ace:dataTable> 

    public void toggleSelectAll(ValueChangeEvent valueChangeEvent) { 
      //this.selectAll=true; 
      if (valueChangeEvent != null) { 
       if (!valueChangeEvent.getPhaseId().equals(
         PhaseId.INVOKE_APPLICATION)) { 
        valueChangeEvent.setPhaseId(PhaseId.INVOKE_APPLICATION); 
        valueChangeEvent.queue(); 
        return; 

       }// End if 
       } 

      pickList=this.searchCriteriaVo.getResultList(); 
      if (pickList != null) 
      { 

       int size=pickList.size(); 
       for (int rowNum = 0; rowNum < size; rowNum++) { 
        SearchCriteriaVo searchCriteriaVO = (SearchCriteriaVo) pickList.get(rowNum); 
        searchCriteriaVO.setSelected(((Boolean) valueChangeEvent 
          .getNewValue()).booleanValue()); 
      }} 
    } 
     public void uncheckAllSelected(ValueChangeEvent valueChangeEvent) 
     { 
      //this.selectAll=false; 
      if (!valueChangeEvent.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) 
      { 
       valueChangeEvent.setPhaseId(PhaseId.INVOKE_APPLICATION); 
       valueChangeEvent.queue(); 
       return; 
      }// End If 
      SearchCriteriaVo tempSearchCriteriaVo=(SearchCriteriaVo)searchCriteriaVo.getDocMaintainTable().getRowData(); 
      Boolean newValue = ((Boolean) valueChangeEvent.getNewValue()).booleanValue(); 
      tempSearchCriteriaVo.setSelected(newValue); 

     } 

回答

0

我不知道這是什麼版本的Icefaces,也是這裏的確切錯誤。但是,爲什麼你不使用ace:ajax? ValueChangeEvent更像是一些JSF 1.x方法。這樣你就不需要控制任何階段ID。

<ice:selectBooleanCheckbox ...> 
     <ace:ajax render="dataTableId" execute="@this" listener="#{bean.listenerMethod}"> 
    <ice:selectBooleanCheckbox/> 

您的監聽器方法應該將AjaxBehaviourEvent作爲輸入。你可以在bean中使用selectBooleanCheckbox組件的綁定值,然後用它來實現你想要的任何邏輯。