1

我有一个自定义的 AdvancedDataGrid,我们使用alternatingItemColors 属性,它为AdvancedDataGrid 的行显示两种不同的颜色。现在有时数据网格有 15 行,但只有 5 行有数据,我们只希望前 5 行显示交替颜色,其余行应该只显示一种颜色。过去有没有人这样做过,如果有人可以请解释如何做到这一点,将不胜感激。

提前致谢。

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 name: - 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 回答