2009-04-21 6 views
1

고급 데이터 그리드 셀 렌더링에 대한 빠른 질문이 있습니다.AdvancedDataGrid 셀 서식 지정

조건에 따라 데이터 격자의 셀을 프로그래밍 방식으로 색칠해야합니다. 하자, 주식 시세. 전날보다 증가했다면 감소가있을 때 셀을 녹색과 빨간색으로 채색해야합니다.

여기서 중요한 부분은 동적으로 이러한 작업을 수행해야한다는 것입니다. 즉, 사용자가 비교/조건을 활성화하면 셀이 채색됩니다. 사용자가 비교를 사용하지 않으면 다시 기본 동작으로 돌아갑니다.

렌더러를 사용해야한다는 것을 알고 있습니다. 그러나 확실하지는 않습니다. 셀에 사용하는 방법과 너무 동적으로 사용하는 방법입니다. 아무도 그것을 어떻게 가야하는지 설명해 주시겠습니까?

감사

답변

3

의 아이템 렌더러는 구성 요소의 "항목"또는 하위 구성 요소의 모양을 정의하는 데 사용되는 구성 요소입니다. ADG의 경우 "항목"은 개별 셀입니다. 렌더러로 작동하도록 완전히 맞춤화 된 클래스를 만들거나 (필수 인터페이스를 구현 한 경우) 또는 대부분의 경우 기존 구성 요소를 확장 할 수 있습니다. ADG 셀의 기본 렌더러는 배경색을 지원하지 않으므로 렌더러로 사용하는 구성 요소를 만들거나 확장해야합니다. 즉, 다음과 같은 질문에 연계 된 튜토리얼,에서 일한다는 기본 전제입니다 :

Setting background color for datagrid row in Adobe Flex

배경 색상을 지원하는의 itemRenderer를 만든 후, 당신은 정의 할 수있는 곳과 같은 두 가지 옵션이 당신의 " 정황"; itemRenderer 내부 또는 ADG의 styleFunction을 사용하여 (itemRenderer가 "background"스타일을 정의하도록 추가적으로 요구).

귀하의 경우, 각 셀에 전송 된 데이터에 현재와 어제의 주가 값을 포함시키고 둘을 비교하여 배경을 그리는 데 사용 된 색을 결정할 수 있습니다. 다시 말하면 위에 제공된 자습서 링크를 참조하십시오.

if(data.today > data.yesterday) 
{ 
    // set color or return style 
} 
else ... 

으로 "전환"사용자 정의 셀 색상, 스위치 사이에 다음의 itemRenderer 또는 styleFunction 중 하나에서, 당신은의 itemRenderer의/styleFunction의 데이터 객체에 속성을 비교하는 것, 예를 들어, (당신이보고있는 행에 해당) 커스텀 렌더러와 디폴트 (무색) 렌더러. 즉, 색상을 표시해야 할 때 itemRenderer 속성을 사용자 정의 itemRenderer 클래스로 설정하고 "기본 비헤이비어"를 원할 때 "null"로 설정합니다.

+0

답장을 보내 주셔서 감사합니다. 값이 위/아래 인 경우 RED/GREEN을 표시해야하는 곳에서 ITEMRENDERER를 사용할 수 있습니다. 그러나 동일한 행의 다른 셀과 셀을 비교하는 것이 어렵습니다. 에서와 같이, 오늘 2 열, 어제 있습니다. TODAY 및 YESTERDAY 값을 기준으로 오늘 페인트해야합니다. 즉, 한 행에 대해 오늘> 어제이면 오늘은 녹색이되고 그렇지 않으면 빨간색이됩니다. – online19

+0

itemRenderer 내부의 열을 비교할 수 있지만 dataProvider를 ADG에 할당하기 전에 처리하는 것이 더 쉽습니다. 예를 들어 dataProvider의 데이터 객체에 새 속성 (예 : "higherThanYesterday"부울 값)을 만들 수 있습니다. 그것을 계산 한 다음 해당 속성의 값에 따라 색상을 지정하십시오. – Stiggler

+0

나는 비록 쿼리를 변경할 수 없습니다. itemRenderer 내부의 열을 비교할 수 있다고 언급했습니다. 제가 그것에 대해 더 많이 알 수있는 자원을 가르쳐 주시겠습니까? – online19