Flex3 AdvancedDataGrid: как добавить новый столбец на основе существующего? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть AdvancedDataGrid в flex3 (Flex 3) с 4 столбцами:

  • id: int
  • категория: строка
  • имя: строка
  • isPreferred: Boolean

И я хотел бы добавить пятый столбец

  • избранное: Изображение

    Значение любимой волиосновываться на значении isPreferred: если true, то избранное будет значком «Чтение сердца», если «Ложь», значком серого сердца.
    Спасибо за вашу помощь.

Ниже мой код:

  • содержание mxml













    • объект данных в скрипте действия открытый класс Purchase {public function Purchase () {

      }

      private var _id: int = -1;private var _category: String = null;private var _productName: String = null;
      private var _preferred: Boolean = false;

      публичная функция get id (): int {return _id;}

      идентификатор набора открытых функций (pId: int): void {_id = pId;}

      публичная функция get category (): String {return _category;}

      категория набора открытых функций (pCategory: String): void {_category = pCategory;

      if ((_category == null) || (_category == "")) {               
          _category = "Default Category";
      }
      

      }

      открытая функция get name (): String {return _productName;}

      имя набора открытых функций (pName: String): void {_productName = pName;

      if ((_productName == null) || (_productName == "")) {
          _productName = "default product name";
          category = _productName;
       }
      

      }

      открытая функция get isPreferred (): Boolean {return _preferred;}

      набор открытых функций isPreferred (pPreferred: Boolean): void {_preferred = pPreferred;}}

1 Ответ

0 голосов
/ 06 апреля 2011

Для этого вам понадобится itemRenderer.Нечто подобное должно работать:

<mx:AdvancedDataGridColumn headerText="favorite">
    <mx:itemRenderer>
        <mx:Component>
            <mx:Image source="{data.isPreferred ? ICON_FAVORITE : ICON_NEUTRAL}">
                <mx:Script>
                    <![CDATA[
                        [Embed(source="..\assets\coeur_rouge.png")]
                        public static const ICON_FAVORITE:Class;

                        [Embed(source="..\assets\coeur_gris.png")]
                        public static const ICON_NEUTRAL:Class;
                    ]]>
                </mx:Script>
            </mx:Image>
        </mx:Component>
    </mx:itemRenderer>
</mx:AdvancedDataGridColumn>

Пожалуйста, имейте в виду, что этот кусок кода не может быть использован повторно.Если вам нужно использовать столбцы, которые часто показывают изображения, я рекомендую реализовать пользовательский ImageColumn, который расширяет mx:AdvancedDataGridColumn, имеет своего рода imageFunction как свойство и использует пользовательский itemRenderer, который будет использовать imageFunction столбца дляпоказать соответствующее изображение.

...