我需要以编程方式更改Flex中数据网格中单行的背景颜色。我已经搜索了网络并发现了对“dg.setPropertiesAt”的引用,这不是一种受支持的方法(根据编译器)。此外,有建议扩展dg的“drawRowBackground”方法,但我需要在外部设置背景(而不是从dg中的逻辑)。
欢迎提出任何建议。
TIA, 鲍勃
答案 0 :(得分:6)
您必须使用itemRenderer才能完成此操作。有关详细信息,请参阅以下示例:
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postId=61&productId=2
答案 1 :(得分:3)
几天前,我想知道同样的事情。如果你有Pro版本的Flex,它的AdvancedDataGrid有内置的“styleFunction”属性来处理这个问题。如果您只使用常规的DataGrid,这可能会有所帮助:
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12548
评论链接到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是网格的行颜色。