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 직접 편집해도 안되고;
댓글 없음:
댓글 쓰기