XPLATFORM 101
엑스플랫폼을 처음 다루면서 개념잡기가 어려운 것 중에 하나가
데이터셋에 대한 이야기입니다.
데이터를 쉽게 다루기 위해 만들어진 도구이지만 아무래도 처음 쓰기에는 어려움이 있습니다.
하지만 잘 사용하면 강력한 도구가 됩니다.
마치 스마트폰 처럼 말이죠.

어떻게 데이터셋 개념을 잡았는데 FilteredDataset 라는 것이 나타나서
정신을 혼란하게 만듭니다. 그래서 간단하게 이를 정리해보고자 합니다.

1. FilteredDataset 는 데이터를 독립적으로 사용할 수 있나?
일반적으로 데이터셋을 만드록 데이터를 설정하면 컬럼에 대한 정보와 데이터(Row)에 대한 정보를
기록합니다. 이런 정보는 소스에 기록되구요.
하지만 FilteredDataset 는 이런 정보를 가지고 있지 않습니다. 유일하게 가지고 있는 것은 binddataset 입니다.
독립적으로 데이터를 가지고 있는 것이 아니라 바인딩된 데이터셋을 기준으로
logical 한 데이터를 가지는 형식입니다.

2. FilteredDataset 을 왜 쓰는 거죠?
아래 그림과 같이 2개의 그리드가 있고 1번 그리드에서 특정 항목을 선택하면 선택된 group 데이터만
2번 그리드에 보여준다고 합시다. 이때 1번 데이터셋에는 영향을 주지 않고 2번 그리드에 표현되는 항목만
처리를 해주어야 하기 때문에 뭔가 별도의 장치가 필요합니다.
이럴 경우에 별도의 장치로 FilteredDataset 을 사용할 수 있습니다.


자 이제 예제를 보겠습니다.
예제는 위의 그림처럼 2개의 그리드가 있고 1번 그리드에서 항목을 선택하면 선택된 group 데이터만 2번 그리드에
보여주도록 할 것입니다.
화면 소스는 특별할 것이 없으니 UX스튜디오에서 확인해보시고
스크립트를 보겠습니다.
function Grid00_oncellclick(obj:Grid, e:GridClickEventInfo)
{
var group_nm = this.Dataset00.getColumn(e.row, 'group');
this.FilteredDataset00.filter("group=='"+group_nm+"'");
}
그리드의 특정 셀(항목)을 클릭하게되면 GridClickEventInfo라는 객체가 전달됩니다.
이 안에는 선택된 셀에 대한 여러 정보가 담겨져있습니다.
여기에서는 선택된 row에서 group 이라는 컬럼의 정보를 가져오게 하고
이를 FilteredDataset00 에서 필터링  조건으로 적용시킵니다.
그럼 선택할때마다 2번 그리드의 데이터가 바뀌는 효과를 볼 수 있습니다.
function Button00_onclick(obj:Button,  e:ClickEventInfo)
{
this.Dataset00.setColumn(Dataset00.rowposition,1,Edit00.value);
}

function Button01_onclick(obj:Button,  e:ClickEventInfo)
{
this.FilteredDataset00.setColumn(FilteredDataset00.rowposition,1,Edit00.value);
}
그리고 4개의 버튼을 배치했는데
원본 데이터셋과 FilteredDataset 사이에 데이터를 수정시 어떻게 영향을 미치는지 확인할 수 있습니다.
setColumn() 메소드는 지정된 row, column 에 해당하는 데이터를 지정된 값으로 변경시킵니다.
양쪽 다 수정시 서로 영향을 미치게 되지만 데이터셋에는 최초 로딩된 데이터를 따로 가지고 있기 때문에
언제든지 복구시킬 수 있습니다.
function Button02_onclick(obj:Button,  e:ClickEventInfo)
{
this.Dataset00.filter("group=='A'");
}

function Button03_onclick(obj:Button,  e:ClickEventInfo)
{
this.FilteredDataset00.filter("group=='B'");
}
하지만 데이터셋에서 필터를 적용하는 경우에는 FilteredDataset 에서 참조하는 원본이 바뀌는 것이기 때문에
FilteredDataset 에서 어떻게 복구할 수 있는 방법이 없습니다.
상황에 따라 다양하게 사용해보면 좀 더 많은 팁을 얻을 수 있지 싶습니다.

* 첨부된 파일은 압축을 풀어서 참조하시면 됩니다.
* 예제로 살펴보는 이라고 제목을 붙였는데 예제가 좀 아쉽네요. ㅠㅠ

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