2013-06-12 2 views
0

여기 내 코드입니다. 내 선택 상자를 클릭하려고 할 때 하위 선택 상자를 모두 선택해야하고 선택 상자를 선택 취소 할 때 하위 선택 상자가 모두 Unselectable.i에서 다음을 시도했습니다. 방법. 그러나 정확한 출력을 얻지 않았다. 어느 하나의 도움?모든 확인란을 선택하십시오. 제대로 작동하지 않습니다.

<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

Iceface의 버전을 알지 못하며 여기에서 정확히 무엇이 잘못 되었습니까? 하지만 왜 에이스를 사용하지 않을까요? 아약스? ValueChangeEvent는 JSF 1.x와 비슷합니다. 이렇게하면 모든 단계 ID를 제어 할 필요가 없습니다.

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

청취자 메소드는 AjaxBehaviourEvent를 입력으로 사용해야합니다. bean에서 selectBooleanCheckbox 구성 요소의 Y 인드 값을 취한 다음이를 사용하여 원하는 논리를 구현할 수 있습니다.

관련 문제