2014-08-29 2 views
0

보기 컨트롤이있는 Xpages 응용 프로그램에서 작업하고 있습니다. 열 머리글에 확인란을 두어보기의 모든 확인란을 선택하려고했습니다. 문제는보기에서 다른 페이지로 이동했을 때 그 행이 선택되지 않고 표시 페이지에서만 선택이 이루어진 것입니다. 그래서보기의 모든 페이지에서 모든 행을 선택할 수 있기를 원합니다. 한 페이지에서 다른보기로 전환 할 때 선택이 사라지 지 않습니다.모두 선택 lotus xpages

+0

전통적인보기 컨트롤에서 가능할 지 확실하지 않습니다. 당신은 각 체크 박스에 값을 저장하는 반복 컨트롤을 사용하여이를 수행 할 수 있습니다. –

+0

영감을 얻기 위해 이것을보십시오 : http://hasselba.ch/blog/?p=1062 –

+2

답과 다른 의견에서 알 수 있듯이 이것은 정말 간단한 작업이 아닙니다. 내 주요 질문은 그러나 당신이 선택한 모든 항목과 함께하고 싶은 무엇입니까? 대부분의 경우 목표를 달성 할 수있는 다른 방법이 있습니다. 즉, Notes 클라이언트 개발에서 Xpages로 이동하면 자연스럽게 항상 사용되는 솔루션과 비슷한 솔루션을 찾습니다. 어느 것이 가장 좋은 것들이 아닌가? –

답변

1

보기 및 선택에 몇 가지 문제가 있습니다.

우선 페이지 이동 작업은 기본적으로 부분 실행을 사용할 수 있으므로 '모든 행 선택'데이터를 처리하지 않습니다. 호출기에 partialExecute="false"을 입력하면 '모든 행 선택'확인란이 페이지간에 유지됩니다.

그러나 열 및 columnHeader에 체크 박스가있는 경우 구성 요소는 선택한 최종 배열을 백엔드에 유지합니다. 불행히도,이 배열은 보이는 선택만을 유지합니다. 배열은 viewPanel 구성 요소에 의해 유지 관리되므로 표시되지 않는 데이터 항목 목록을 인식하지 못합니다.

또한 체크 박스 구현은 백엔드에서 선택 항목을 가져 와서 페이지간에 캐시 할 수있는 균등 한 메커니즘을 제공하지 않습니다.

선택하려면 모든 체크 박스를 약간의 트릭으로 수행 할 수 있습니다. 모든 기본 스타일을 사용하고 있다고 가정합니다.

<xp:inputHidden 
    id="inputAllSelected" 
    value="#{viewScope.allSelected}" 
    defaultValue="false"></xp:inputHidden> 
<xp:scriptBlock 
    id="scriptBlock1"> 
    <xp:this.value><![CDATA[ 
function getSelectAllCheckbox() { 
    return dojo.query("input.xspCheckBoxViewColumnHeader")[0]; 
} 

function toggleSelectAll(){ 
    dojo.byId("#{id:inputAllSelected}").value=getSelectAllCheckbox().checked; 
} 

dojo.addOnLoad(function() { 
    dojo.connect(getSelectAllCheckbox(), "onchange", toggleSelectAll); 
}); 
]]></xp:this.value> 
</xp:scriptBlock> 

페이지 사이에 확인란을 캐시하려면 사용자 지정 열을 사용하여 자신의 확인란을 구현합니다. 데이터 테이블 구성 요소를 사용하여 유연성을 높이는 것이 좋습니다.