1

カスタムの AdvancedDataGrid があり、AdvancedDataGrid の行に 2 つの異なる色を表示する AlternateItemColors プロパティを使用します。現在、datagrid に 15 行ある場合がありますが、データがあるのは 5 行のみで、最初の 5 行のみを交互の色で表示し、残りの行は 1 色のみを表示する必要があります。誰かが過去にこれを行ったことがありますか。誰かがこれを行う方法を説明していただければ、本当に感謝しています。

前もって感謝します。

4

3 に答える 3

1

Datagridをオーバーライドし、drawRowBackgroundメソッドをオーバーライドする必要があります。rowIndが行数を超える場合は、デフォルトの色を設定します。下記のコードスニペットを参照してください-

パブリッククラスCustomDataGridはAdvancedDataGridを拡張します{

    protected override function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void{
          var XMLdata:XML=rowNumberToData(dataIndex) as XML;                       
          if(XMLdata!=null){                  
                    if(XMLdata.attribute(Constants.col) != undefined && XMLdata.attribute(Constants.col) != ""){
                                    color=XMLdata.attribute(Constants.col);                 
                    }else{
                            color=0xFFFFFF;
                    }                                            
          }                       
          super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);                 
    }               
}
于 2012-06-01T11:34:55.887 に答える
0

高さが許容するよりも行数が少ない場合は、rowCount を実際の行数に設定するか、drawRowBackground をオーバーライドします。

于 2012-05-24T23:36:16.043 に答える
0

ADG にアイテム レンダラーを使用してみてください: -

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               >
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;

            [Bindable]
            private var dpHierarchy:ArrayCollection= new ArrayCollection([
                {name:"A", region: "Arizona"},
                {name:"B", region: "Arizona"},
                {name:"C", region: "California"},
                {name:"D", region: "California"}
            ]); 

        ]]>
    </fx:Script>

    <mx:AdvancedDataGrid id="myADG" 
                         width="500" height="500" 
                         paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0"
                         dataProvider="{dpHierarchy}"
                         itemRenderer="DrawAlternateRowColor">
        <mx:columns>
            <mx:AdvancedDataGridColumn dataField="name" headerText="Name" />
            <mx:AdvancedDataGridColumn dataField="region" headerText="Region" />
        </mx:columns>   

    </mx:AdvancedDataGrid>

</s:Application>

//ItemRenderer 名: - DrawAlternateRowColor -- CADG と同じ概念を使用できます。

<?xml version="1.0" encoding="utf-8"?>
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                  xmlns:s="library://ns.adobe.com/flex/spark" 
                                  xmlns:mx="library://ns.adobe.com/flex/mx" 
                                  focusEnabled="true" alternatingItemColors="[#0000FF, #FF0000]"
                                  width="100%" height="100%">
    <s:Label id="lblData"  verticalAlign="middle" text="{listData.label}" />
</s:MXAdvancedDataGridItemRenderer>
于 2012-05-25T09:22:31.883 に答える