我需要以編程方式更改Flex中數據網格中單個行的背景顏色。我搜索了網絡,發現對「dg.setPropertiesAt」的引用,它不是受支持的方法(根據編譯器)。此外,還有一些建議可以擴展dg的「drawRowBackground」方法,但我需要在外部設置背景(而不是從dg內部的邏輯)。在Adobe Flex中爲datagrid行設置背景顏色
歡迎任何和所有建議。
TIA, 鮑勃
我需要以編程方式更改Flex中數據網格中單個行的背景顏色。我搜索了網絡,發現對「dg.setPropertiesAt」的引用,它不是受支持的方法(根據編譯器)。此外,還有一些建議可以擴展dg的「drawRowBackground」方法,但我需要在外部設置背景(而不是從dg內部的邏輯)。在Adobe Flex中爲datagrid行設置背景顏色
歡迎任何和所有建議。
TIA, 鮑勃
我只是一個前兩天知道同樣的事情。如果你有Pro版本的Flex,它的AdvancedDataGrid有內置的「styleFunction」屬性來處理這個。如果你只得到了正規的DataGrid得心應手,這可能幫助:
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12548
註釋有鏈接到styleFunction的文檔:
除此之外,Stiggler的建議使用的itemRenderer是您的其他追索權。
dg.setPropertiesAt(3, {backgroundColor:0xFF0000});
其中dg是您的數據網格,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方法的啓發。
希望它有幫助。
使用此與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接口,它可以讓您綁定到您的數據提供程序。 該接口由GridLayout調用。請參閱:http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as。你可以使用任何IVisualElement作爲後臺渲染器,但是使用s:DefaultGridItemRenderer,你可以使用一些開箱即用的功能。
希望這會有所幫助
看起來像這樣會做...謝謝,鮑勃 – 2009-04-14 16:53:04