2013-06-12 3 views
0

Вот мой код: , когда я пытаюсь щелкнуть мой selectbox, все его дочерние selectboxes нужно выбрать, и когда я сниму флажок выбора, все его дочерние selectboxes должны быть Unselectable.i в следующем way..but didnt получить точный output.can любая помощь?Выделить все флажки не работает должным образом

<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 это, а также что здесь не так. Но почему вы не используете туз: ajax? ValueChangeEvent больше похож на некоторый метод JSF 1.x. Таким образом, вам не понадобится контролировать любой идентификатор фазы.

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

Ваш метод слушателя должен принимать AjaxBehaviourEvent в качестве входного сигнала. Вы можете взять привязанное значение компонента selectBooleanCheckbox в bean-компоненте, а затем использовать его для реализации любой логики, которую вы хотите с ней.

Смежные вопросы