2010-12-06 2 views

ответ

2

Создать пользовательский визуализатор и проверить значение, когда свойство данных устанавливается:

override public function set data(value:Object):void 
{ 
    super.data = value; 

    if(data > 6) 
    setStyle("backgroundColor", 0xFFFF00); 
    else 
    setStyle("backgroundColor", 0xFFFFFF); 
} 

Помните, что вам нужно, чтобы вернуть цвет, если тест не пройден, поскольку списки повторного делает (вы получите случайные желтый фон, если вы не делаете).

0

Я сделал что-то подобное в прошлом, используя AdvancedDataGrid и AdvancedDataGridRendererProvider. Я использую Flex 4.0 SDK, но поскольку компонент AdvancedDataGrid не изменился между 3.5 и 4.0, код должен быть схожим.

Отображатель "MyRenderer.mxml":

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      backgroundColor="{SetBackgroundColor(data)}"> 
    <fx:Script> 
     <![CDATA[ 
      [Bindable] private var bgColor:uint = 0xFFFFFF; 

      private function SetBackgroundColor(obj:Object):uint 
      { 
       var returnColor:uint = 0xFFFFFF; 

       if (obj["Quantity"] != null) 
       { 
        if (int(obj["Quantity"]) > 6) 
        { 
         returnColor = 0xFFF8DD; 
        } 
        else 
        { 
         returnColor = 0xFFFFFF; 
        } 

       return returnColor; 
      } 

      override public function set data(value:Object):void 
      { 
       super.data = value; 
       if (value["Quantity"] != null) 
       { 
        theLabel.text = value["Quantity"].toString(); 
       } 
       else 
       { 
        theLabel.text = ""; 
       } 
      } 
     ]]> 
    </fx:Script> 
    <mx:Label id="theLabel" /> 
</mx:HBox> 

Используя рендерер:

<mx:AdvancedDataGrid dataProvider="{YourArrayCollection}"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn id="colQuantity" headerText="Qty" dataField="Quantity"/> 
    </mx:columns> 
    <mx:rendererProviders> 
     <mx:AdvancedDataGridRendererProvider column="{colQuantity}" depth="1" dataField="Quantity" renderer="MyRenderer" /> 
    </mx:rendererProviders> 
</mx:AdvancedDataGrid> 

EDIT: Я поставил BackgroundColor в функцию, так что, когда itemRenderers get recycled функция будет вызвана и установите backgroundColor на правильное значение.