2016-08-08 3 views
0

특정 데이터가 표시된 화면이 있습니다. 데이터를 표시하려면 datatable 옵션을 사용하고 행을 선택하려면 rowselector를 사용하고 있습니다. 행을 선택하면 일부 사용자가 편집 및 삭제와 같이 데이터를 조작 할 수있는 옵션이 표시되지만 편집 할 수없는 데이터가 필요합니다.데이터 테이블 IceFace에서 특정 행 비활성화하기

나는 현재 월이 8 월이고 내 페이지가 이전 두 달 데이터와 다음 10 개월 데이터를 표시하는 것처럼 나는 월 단위로 데이터를 보여주는 화면을 가지고 있습니다.

이제 rowselector를 통해 행을 선택하는 동안 현재 개월 및 이전 2 개월 데이터를 편집 할 수 없거나 비활성화 할 수 있기를 바랍니다.

<i:dataTable id="ConfigurationOne" 
      headerClass="dataTableCommonHeader" 
     headerClasses="table_header" 
     columnClasses="stringColumn, stringColumn w80" 
     rowClasses="level2ColorStyle, level1ColorStyle" 
     value="#{configOneBean.monthsDateList}" var="row" cellpadding="0" 
     cellspacing="1" columnWidths="50px,100px" rows="25" 
     width="40%" 
     onrowmouseover="this.style.cursor='default';this.style.backgroundColor='#F1F1F1'‌​;" 
     onrowmouseout="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" 
     > 

     <i:column> 
      <i:rowSelector value="#{row.selected}" 
       selectionListener="#{configOneBean.rowSelectMonthsListener}" /> 
      <f:facet name="header"> 
       <i:outputText value="#{resApp['config.type.code']}" /> 
      </f:facet> 
      <i:panelGroup style="width:200px;overflow:hidden;"> 
       <i:outputText value="#{row.NRPV_NRPA_CODE}" /> 
      </i:panelGroup> 
     </i:column> 

     <i:column> 

      <f:facet name="header"> 
       <i:outputText value="#{resApp['config.type.name']}" /> 
      </f:facet> 
      <i:panelGroup style="width:200px;overflow:hidden;"> 
       <i:outputText value="#{row.NRPV_CREATED_BY}" /> 
      </i:panelGroup> 
     </i:column> 



    </i:dataTable> 

public void rowSelectMonthsListener(RowSelectorEvent event) { 
    int selectRow = event.getRow(); 
    initActionMap(); 
    if (event.isSelected()) { 

     this.monthsDate = monthsDateList.get(selectRow); 
     getAllMonthsAndDate(); 
     actionMap.put(WorkMode.EDIT_GROUP, true); 

    } else { 

     this.monthsDate = null; 
     workMode = WorkMode.EMPTY; 
    } 
} 

답변

0

rowSelector 구성 요소가 rendered 속성이 않습니다 enter image description here

다음은 내보기 페이지와 rowselector 기능입니다. 행을 클릭 할 수 있는지 여부를 결정하기 위해 메서드에 바인딩하면 트릭을 수행해야합니다. 아니 내 코드 에서이 속성을 시도하지 않았지만 도청하지 않으면 작동해야합니다.

+0

안녕하세요 ** Wis ** 답장을 보내 주셔서 감사합니다 .... 조금 더 자세히 설명해 주시거나 샘플 코드가 큰 도움이 될 수 있겠습니까? –

+0

나는 다음과 같이 제안했습니다 :''관리 빈에서는 public boolean isSelectable (Object obj)를 가져야합니다. 현재 날짜와 비교하여 변수'obj'를 테스트하고 선택 가능 여부를 결정합니다. 당신의'obj' 변수의 타입, 아마도'Date', 아마도'Calendar' (제 추측이지만, 당신 자신의 POJO 일 수 있습니다)를 모르겠습니다. – Wis

+0

안녕하세요, 귀하의 회신에 대한 @Wis 감사합니다 ......... 나는이 논리를 적용하려고했지만 그것은 모든 행을 사용할 수 없게됩니다 ..... 난 개월 이름과 데이터를 비교하고 그것이 데이터 테이블에서 전체 데이터 테이블은 사용할 수 없게됩니다. –