我正在創建Flex應用程序。 在數據網格單元格中輸入數據時,我希望檢查單元格值小於20,如果不是,則將該單元格的背景顏色更改爲紅色。更改Datagrid單元格中的BackColor Flex 3
如何做到這一點??
在此先感謝...
我正在創建Flex應用程序。 在數據網格單元格中輸入數據時,我希望檢查單元格值小於20,如果不是,則將該單元格的背景顏色更改爲紅色。更改Datagrid單元格中的BackColor Flex 3
如何做到這一點??
在此先感謝...
我會在定義ItemRenderer做到這一點,並通過覆蓋set data
或updateDisplayList
功能設置字體顏色。
應用:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/ -->
<mx:Application name="DataGridColumn_itemRenderer_test "
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.utils.ObjectUtil;
private function price_labelFunc(item:Object, column:DataGridColumn):String {
return currencyFormatter.format([email protected]);
}
private function price_sortCompareFunc(itemA:Object, itemB:Object):int {
return ObjectUtil.numericCompare([email protected], [email protected]);
}
]]>
</mx:Script>
<mx:XML id="itemsXML">
<items>
<item name="Item 1" price="1.32" />
<item name="Item 2" price="-12.23" />
<item name="Item 3" price="4.96" />
<item name="Item 4" price="-0.94" />
</items>
</mx:XML>
<mx:Style>
.centered {
text-align: center;
}
</mx:Style>
<mx:CurrencyFormatter id="currencyFormatter"
precision="2"
useNegativeSign="false" />
<mx:DataGrid id="dataGrid" dataProvider="{itemsXML.item}">
<mx:columns>
<mx:DataGridColumn dataField="@name"
headerText="Name:"
headerStyleName="centered" />
<mx:DataGridColumn dataField="@price"
headerText="Price:"
textAlign="right"
headerStyleName="centered"
labelFunction="price_labelFunc"
sortCompareFunction="price_sortCompareFunc"
itemRenderer="PriceLabel" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
PriceLabel.as:
/** http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/ */
package {
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PriceLabel extends Label {
private const POSITIVE_COLOR:uint = 0x000000; // Black
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
/* Set the font color based on the item price. */
setStyle("color", (parseFloat([email protected]) <= 0) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
}
我會建議你使用的itemRenderer用於DataGrid和使用的itemRenderer的「數據」變量,檢查值是什麼例如> 20。然後,基於此設置itemRenderer的背景顏色。
如果您不知道如何使用itemRenderer,請執行谷歌搜索。那裏有大量的DataGrid itemRenderer示例。
+1嘿,很好的答案。雖然對於itemRenderer,雖然對於itemRenderer會使用一個.mxml,但是對於某些人來說更容易理解 – Ryan 2011-06-10 15:50:26
@Brian True,它可能會更容易些,但是我認爲你已經提到了itemRenderer,所以我會建議略有不同的方法。 :) – 2011-06-10 16:11:56