XPLATFORM 101

- Grid > Master&Detail


조건 검색에서 자주 활용하는 방법입니다.

조회조건을 구성하는 것이 그냥 나열하면 되는것처럼 보이지만

실제 설계 단계에서 어떻게 작업해주느냐에 따라 생산성에 큰 차이가 있을 수 있습니다.

한달에 한번 정도 접근하는 화면이라면 모르지만 매일같이 쓰는 화면이라면 엄청난 차이가 나겠죠.


예제처럼 아파트 동을 선택하고 해당하는 동의 호수를 선택하는 경우

주요한 작업은 필터링입니다.


이런 작업을 접근하는 방식으로 매번 필요한 트랜잭션을 처리할 수 있습니다.

동을 선택하면 해당 동에 속하는 호수만 가져오는 방식입니다.

하지만 작업이 빈번하고 마스터와 상세 관계가 정적인 경우에는

데이터를 한번에 가져와서 필터링 처리해주는 것이 좀 더 효과적입니다.

function Combo_dong_onitemchanged(obj:Combo, e:ItemChangeEventInfo)

{

if(e.postindex == 0)

{

ds_ho.filter("");

}

else

{

Filter(e.postindex);

Combo_ho.index = 0;

}

}


function Filter(row)

{

var filter_str;

filter_str = "dong == '" + ds_dong.getColumn(row, "name") + "'";

ds_ho.filter(filter_str); // Filtering처리

}

콤보박스에서 onitemchanged 이벤트를 받아서 해당 인덱스값을 필터링 조건에 추가해서 처리합니다.
데이터셋에서 filter 메소드는 해당 조건식을 만족하는 Row 만 보이게 하는 메소드입니다.
filter 메소드는 항상 이전 값을 덮어쓰기 때문에 상태 설정에 유의해야 합니다.
여기에서는 간단하게 동이 같은 값만 보여주도록 설정하고 있습니다.

한가지 흥미로운 것은 전체 선택일 경우에 어떻게 처리할 수 있는지입니다.
전체 항목은 실제 데이터에 담고 있는 항목이 아니기 때문에
임의로 설정하게 됩니다.
일반적으로 index 0 번째에 배치하게 되고 해당 index 값으로 비교하게 됩니다.


이번 예제에서는 전체라는 값을 가지는 데이터셋을 별도로 설정했는데
일반적으로는 데이터를 가져와서 해당 위치에 전체라는 dummy 값을 추가하게 됩니다.

http://cafe.naver.com/xplatform101/179