2013-06-12 58 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组件的绑定值,然后用它来实现你想要的任何逻辑。