установите фоновый цвет ячейки сетки данных на желтый, если значение ячейки больше 6 - PullRequest
1 голос
/ 06 декабря 2010

Я использую flex 3.5. Я хочу установить фоновый цвет ячейки в сетке данных на желтый, если данных в нем больше 6.

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

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

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

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

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

0 голосов
/ 09 декабря 2010

В прошлом я делал нечто подобное, используя 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>

РЕДАКТИРОВАТЬ: Я установил backgroundColor в функции, чтобы при повторном использовании itemRenderers функция вызывалась и устанавливал backgroundColor на правильное значение.

...