2009-04-14 5 views
6

Flex의 DataGrid에서 단일 행의 배경색을 프로그래밍 방식으로 변경해야합니다. 나는 인터넷을 샅샅이 뒤졌으며 "dg.setPropertiesAt"에 대한 참조를 발견했다. 이것은 컴파일러에 따라 지원되지 않는 메소드이다. 또한 dg의 "drawRowBackground"메서드를 확장하는 제안이 있지만 외부에서 dg 내부의 논리가 아닌 배경을 설정해야합니다.Adobe Flex에서 DataGrid 행의 배경색 설정

모든 제안을 환영합니다.

TIA, 밥

답변

3

나는 일의 단지 몇 전에 같은 일을 궁금 해서요. Pro 버전의 Flex를 사용하는 경우 AdvancedDataGrid에 내장 된 "styleFunction"속성을 사용하여이를 처리 할 수 ​​있습니다. 당신은 단지 편리 정규 데이터 그리드를 가지고 있다면,이 도움이 될 수 있습니다 :

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12548

styleFunction의 문서가 링크 주석 : 그 너머

http://livedocs.adobe.com/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridBase.html#styleFunction

,을 사용 Stiggler의 제안 itemRenderer는 다른 수단입니다.

0
dg.setPropertiesAt(3, {backgroundColor:0xFF0000}); 

여기서 dg는 데이터 격자이고 숫자 3은 그리드의 행 색상입니다.

2

나는 다음과 같이 DataGrid 클래스를 확장하고 내 자신의 방법을 작성하여 관리 :

public function paintRow(rowNumber:Number,color:uint):void{ 
var rowBGs:Sprite=Sprite(listContent.getChildByName("rowBGs")); 
drawRowBackground(rowBGs,rowNumber,listContent.rowInfo[rowNumber].y,listContent.rowInfo[rowNumber].height,color,null); 
} 

이것은 데이터 그리드 클래스의 drawRowBackgrounds 방법에 의해 영감을했다.

희망이 있습니다.

3

사용이 spark.DataGrid

DataGridRowBackground.mxml :

앱 코드에서
<?xml version="1.0" encoding="utf-8"?> 
<s:DefaultGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/halo" 
    implements="spark.components.gridClasses.IGridVisualElement" 
    backgroundColor="{data.color}" background="true"> 

    <fx:Script> 
     <![CDATA[ 

    import spark.components.Grid; 

    public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void 
    { 
     if (!grid.dataProvider || rowIndex >= grid.dataProvider.length) 
      data = null; 
     else 
      data = grid.dataProvider.getItemAt(rowIndex); 
    } 

     ]]> 
    </fx:Script> 
</s:DefaultGridItemRenderer> 

는 :

<s:DataGrid> 
    <s:rowBackground> 
     <fx:Component><my:DataGridRowBackground /></fx:Component> 
    </s:rowBackground> 
</s:DataGrid> 

핵심 요소는 당신이 당신의 dataProvider에 결합 할 수 있습니다 IGridVisualElement 인터페이스 . 이 인터페이스는 GridLayout에 의해 호출됩니다. 참조 : http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as. 임의의 IVisualElement를 배경 렌더러로 사용할 수 있지만 DefaultGridItemRenderer를 사용하면 기본적으로 일부 기능을 사용할 수 있습니다.

희망이 있습니다.

관련 문제