2012-05-19 3 views
1

두 가지 양식이 관련되어 있고이를보기 컨트롤에 결합했습니다. 그리 어렵지 않습니다. 이것은 "1 대 다수"유형 시나리오입니다.정렬 방법 조회 열별로보기 컨트롤

고객 ID 및 고객 이름 열이있는 고객보기가 있습니다. 그런 다음 masterCustomerID, orderNumber, orderDate 컬럼이있는 "많은"문서를 보여주는 뷰가 있습니다.

XPage에서 많은 문서의 뷰 컨트롤을 만들고 masterCustomerID, orderNumber, orderDate 열을 추가합니다. 그런 다음 앞면에 열을 추가하여 DbLookup을 수행하여 고객의 실제 이름을 가져옵니다. 너무 화려하지는 않습니다.

제 조회는이 상황에서 조회 열이 첫 번째 열인 곳입니다. 해당 열을 기준으로보기 열을 정렬하는 전략은 무엇입니까? 기본적으로 주문보기의 키 값은 이름 값과 다를 가능성이 있습니다.

반복 제어를 사용하는 것이 싫으면 쉽게 반대하지 않습니다.

내 첫 번째 생각은 어떻게 든 TreeMaps를 사용하는 것이지만 많은 문서가있는 경우 실용적인지는 알 수 없습니다. 어쩌면 내가 누락 된 것이있을 수 있습니다 ...

어떤 조언을 주시면 감사하겠습니다. 감사합니다.

+0

이름별로 정렬하려면보기가 처음부터 이름순으로 정렬되어야합니다. 그런 다음 나머지 값 (오더)을 조회합니다. –

+0

문제는 뷰가 customerID에 의해 정렬되고 customerName에 의해 뷰를 정렬하려고하지만 고객 문서는 order 문서 (customerID 만)에서 사용할 수 없다고 생각합니다. 이 문제를 해결하는 두 가지 방법을 생각해 볼 수 있습니다 : (1) 큰보기에서 모든 문서를 처리하고, customerID를 해결하고, TreeMap에 저장하고 결과를 datatable/repeat에 바인드합니다 (perf 문제를 줄 수 있습니다) (2) 주문서에 고객 이름을 저장하십시오. BTW : 고객 이름을 검색 한 후에는 캐싱 메커니즘을 구현하여 훨씬 나은 성능을 제공해야합니다. –

+0

진지하게 : 많은 문서에 중복 된 고객 이름을 저장하십시오 (결국 Notes입니다 ;-)). 그런 다음 이름이 변경되었는지 확인하고 업데이트 에이전트를 시작하는 사람 문서의 querysave에 몇 가지 코드가 있습니다. 의사 관계형 접근 방식은 성능을 저하시킵니다. – stwissel

답변

0

(고객 이름, 고객 ID) 구조의보기를 기본보기로 사용하십시오. 그런 다음 고객 ID를 기반으로 구조 (고객 ID, 주문 ID, 주문 날짜)가있는 뷰에서 조회를 통해 다른 열을 채 웁니다. 따라서 1 : N 관계이므로 단일보기 구성 요소는 사용할 수 없지만 두 개의 중첩 된 반복보기 열이 수행합니다.

성능에 미치는 영향 (모든 고객 행을 조회하는 주문)을 알고 있으므로 한 번에 너무 많은 고객을 표시하지 마십시오.