2009-04-14 3 views
6

Flexのデータグリッド内の単一行の背景色をプログラムで変更する必要があります。私はネットを精査し、 "dg.setPropertiesAt"への参照を見つけました。これは、サポートされている方法ではありません(コンパイラによると)。また、dgの "drawRowBackground"メソッドを拡張するための提案がありますが、バックグラウンドを外部(dg内部のロジックからではなく)に設定する必要があります。Adob​​e Flexでのデータグリッド行の背景色の設定

任意のすべての提案を歓迎します。

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); 
} 

これは、DataGridクラスの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を使用すると、すぐに使用できる機能がいくつかあります。

希望します。

関連する問題