2011-10-05 2 views
2

테이블에서 두 개의 열을 표시하는 테이블과 사용자가 선택하고 선택을 취소 할 수있는 확인란이있는 테이블이 있습니다.ADF richtable의 모든 행을 반복합니다.

변경 사항 제출 버튼입니다. 해당 버튼을 클릭하면 표의 행을 반복하고 체크 표시의 상태에 따라 다른 조치를 취합니다. 지금은 테이블을 선택할 수 없습니다.

나는 이것을 하루 만에 들여다 보았고 나는 ADF 다중 선택 표로 변경해야하고 확인란 열 대신에 사용자가 선택하고 선택을 해제하고 사용하도록 허용한다고 생각하고있다. selectedrows 컬렉션은 조치를 취합니다.

아이디어가 있으십니까?

답변

3

나는 그다지 지저분하지 않은 일을 생각해 냈습니다. RichTable 객체에서 선택된 행 집합을 언제든지 얻을 수 있다는 것을 감안할 때 모든 행을 일시적으로 선택하여 선택한 행 집합을 가져올 수 있다고 결정했습니다.

경고 : 현재 응용 프로그램에서 내가 처리하는 테이블은 선택을 허용하도록 설정되어 있지 않으므로 새로 고침이 완료된 후에 선택을 지우는 것에 대해 걱정할 필요가 없습니다.

// set all rows in the table to selected so they can be iterated through 
    selectAllRowsInTable(rolesGrantedAndAvailableTable); 
    RowKeySet rSet = rolesGrantedAndAvailableTable.getSelectedRowKeys(); 

    Iterator selectedEmpIter = rSet.iterator(); 
    DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry(); 
    DCIteratorBinding roleIter = bindings.findIteratorBinding("usersGrantedAndAvailableRolesView1Iterator"); 
    RowSetIterator roleRSIter = roleIter.getRowSetIterator(); 

    // iterate through all rows checking checkmark status and deciding if the roles need to be granted, revoked, or no action be taken 
    while(selectedEmpIter.hasNext()) 
    { 
     // Do your stuff with each row here 
    } 

내가 AMIS blogs에서 발견 된 모든 행을 선택하는 기능은

public void selectAllRowsInTable(RichTable rt) 
{ 
     RowKeySet rks = new RowKeySetImpl(); 
     CollectionModel model = (CollectionModel)rt.getValue(); 
     int rowcount = model.getRowCount(); 

     for(int i = 0; i < rowcount; i++) 
     { 
      model.setRowIndex(i); 
      Object key = model.getRowKey(); 
      rks.add(key); 
     } 

     rt.setSelectedRowKeys(rks); 
} 
+1

이다 또는 당신은 시간의 과정에서 그것을 하나 개의 행을 선택하고 계속할 수 있습니다. 마지막에 오래된'RowKey'를 복원하십시오. – AppleGrew

관련 문제