在Adobe Flex中设置datagrid行的背景颜色

时间:2009-04-14 15:48:34

标签: flex datagrid colors background row

我需要以编程方式更改Flex中数据网格中单行的背景颜色。我已经搜索了网络并发现了对“dg.setPropertiesAt”的引用,这不是一种受支持的方法(根据编译器)。此外,有建议扩展dg的“drawRowBackground”方法,但我需要在外部设置背景(而不是从dg中的逻辑)。

欢迎提出任何建议。

TIA, 鲍勃

5 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

几天前,我想知道同样的事情。如果你有Pro版本的Flex,它的AdvancedDataGrid有内置的“styleFunction”属性来处理这个问题。如果您只使用常规的DataGrid,这可能会有所帮助:

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的建议是你的另一个追索权。

答案 2 :(得分:3)

我通过扩展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 :(得分: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>

关键元素是IGridVisualElement接口,它允许您绑定到dataProvider。 此接口由GridLayout调用。见:http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as。您可以使用任何IVisualElement作为背景渲染器,但使用s:DefaultGridItemRenderer,您可以使用开箱即用的功能。

希望这有帮助

答案 4 :(得分:0)

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

其中dg是您的数据网格,数字3是网格的行颜色。