2008년 6월 17일 화요일

Flex Setting width fixel & percentage for DataGrid Column

Flex 의 DataGrid Column .. 참 웃기다.

웃긴이유는 width 를 지정하는데 Percentage 와 Fixel 의 차이가 묘하기 때문이다.

우선 DataGrid 의 width 를 셋팅하는 방법은 두가지이다.

MXML 에서,
여기선 fixel Setting 밖에는 안된다. 원하는 fixel 을 설정하면 된다.

ActionScript 코드에서.
여기선 fixel 및 Percentage Setting 이 가능하다.
Fixel 은 그냥 원하는 컬럼에 원하는 수치를 입력하면 되고,
dgPrjBasicInfo.columns[3].width = "5";

Percentage 는 원하는 Column 에 DataGrid에 비례한 Fixel 을 입력해 주면 되겠다.
이것이 Adobe 에서 권고하는 Column 에 Percentage 로 width 를 적용하는 방법이다.
dgPrjBasicInfo.columns[5].width = dgPrjBasicInfo.width * 5 / 100;

그렇다면 원하는 취향대로 쓰면 될텐데 뭐가 문제일까?

Percentage 로 width 를 지정할때 부모객체인 DataGrid 에 width 가 지정되어 있다면 ActionScript 에서 적용하는 Column 의 Percentage width 는 적용되지 않는다.
예) mx:datagrid width="100%"

디버깅 찍어보면서 별짓을 다해봤지만 역시 안되더라.. 아직 스킬이 부족해서..

하지만 Flex 의 DataGrid Column 특성을 이해하면 조금 쉽게 문제를 해결할 수 있다.

MXML 에서 지정하는 Fixel 은 고정값이 아닌 초기값이다.

예를들어


mx:datagridcolumn textalign="center" headertext="프로젝트 코드" width="100"
mx:datagridcolumn textalign="center" headertext="프로젝트 명" width="300"
mx:datagridcolumn textalign="center" headertext="계약기간" width="200"


위와 같이 입력해 놓아도 Column 의 폭은 100 , 200 , 300 이란 각각의 값으로 고정되는것이 아니라 초기 Rendering 때 각 값으로 초기화만 될 뿐, 그 후 부모 Container 나 Browser 의 크기가 변함에 따라 비례적으로 width 가 자동으로 변한다.

결론은 Column 의 폭을 비례적으로 맞추기 위해 ActionScript 를 쓸 필요가 없다는 거다.

글이 쓰다 끊어져서 그런지 왼지 모르게 두서없이 느껴지네;;

그나저나 구글 블로그 언제쯤 제한없이 소스나 태그 적을수 있는거야;; HTML 직접 편집해도 안되고;

댓글 없음:

댓글 쓰기