2012-03-01 1 views
2

상단에 호출기가있는 간단한보기 (첫 번째 열에 체크 상자 표시)가 있습니다. 그런 다음 Excel로 내보내는 (apache POI 사용) 문서를 선택하고 싶습니다.뷰를 통해 페이징 할 때 선택 유지 방법?

1 페이지에서 2 개의 문서를 선택할 수 있지만 더 많은 문서를 선택하기 위해 다른 페이지로 전환하면 1 페이지의 모든 선택이 사라집니다.

뷰를 통해 페이징 할 때 어떻게 선택을 유지합니까? 이것은 단지 현재 페이지입니다 때문에 귀하의 질문에, 선택된 ID의 목록을 가져 오는 중

답변

2

viewPanel.getSelectedIds() 

수행 할 수 있습니다하지만 난 가정합니다. 해결 방법은 서버 선택 onclick 이벤트가있는 사용자 정의 체크 박스 열을 추가하여 범위 선택 var (벡터 포함)에 현재 선택된 식별자를 추가합니다. 행이로드 될 때이 var가 있는지 확인하고 체크하면 확인란을 선택합니다. 페이지를 전환 할 때 더 많은 문서를 선택할 수 있습니다.

선택을 완료하면 생성 된 벡터를 사용하여 Excel 문서를 생성 할 수 있습니다. 생성이 완료되면 범위가 지정된 var를 다시 정리하면 완료됩니다.

파이 쉬운)

0

당신은 확장 라이브러리의 pagerSaveState를 시도?

얼마나 많은 상태 정보를 저장하는지 잘 모름.

+0

아니요, 작동하지 않습니다. extLib 샘플 Db (Domino_ViewState)에서 예제를 사용하고 첫 번째 열을 수정하여 확인란을 표시하십시오. 펼치기/접기가 저장되지만 체크 박스는 저장되지 않습니다. –

0

울리히,

약간의 무력이 있습니다. 그러나 나는 제안을 할 수있다. 나는 그것을 구현할 시간이 없지만 그것이 어떻게 작동하는지 설명하려고 노력할 것이다.

여기에는 두 가지 문제점이 있습니다. 우리는 한 페이지에 선택한 항목을 저장하고 같은 페이지로 다시 돌아 가면 복원해야합니다.

이벤트를 삽입 할 수 없기 때문에보기 열의 일반적인 체크 박스가 작동하지 않습니다. 따라서 메모 ID 값을 사용하여 열 내부에 자체 체크 박스를 만들어야합니다.

선택한 ID가 viewScope 내에 저장 될 수 있습니다. 체크 박스에서 viewScope에 저장된 목록에 따라 체크 박스를 선택하거나 선택 해제해야합니다.

RPC 컨트롤을 만들어 백그라운드에서 뷰 스코프 개체와 통신합니다. 하나의 메소드가 있어야합니다 : rpc.myMethod (noteId, checked). noteId를 가져오고 viewScope에 추가/삭제합니다.

<xp:viewColumn id="viewColumn3" displayAs="hidden"> 
<xp:this.facets> 
    <xp:viewColumnHeader xp:key="header" id="viewColumnHeader3"></xp:viewColumnHeader> 
</xp:this.facets> 
<input class="xspCheckBoxViewColumn" type="checkbox" value="#{javascript:viewEntry.getNoteID()}" style="margin: 0px 2px; height: 12px;" onChange="rpc.myMethod(this.value, this.checked)"/></xp:viewColumn> 

희망이 있습니다.

+0

yiyim, teşekkür ederim. 나는 그것을 시도 할 것이다. –