Как применить форматирование к подаче данных AdvancedDataGrid в ActionScript 3.0 - PullRequest
2 голосов
/ 19 мая 2011

Я использую компонент Halo AdvancedDataGrid, в котором itemEditor по умолчанию для каждого столбца - mx.controls.TextInput.

Например, поставщик данных: [КОД] [Bindable] приватная переменная labelGridArray: Array = [{tag: "apple"}, {tag: "* banana"}, {tag: "carrot"}]; [/ CODE] И определение AdvancedDataGrid: [CODE] [/ CODE]

Если строке из массива поставщика данных предшествует звездочка - как в случае с бананом в этом примере - строка должна быть заключена в квадратные скобки и отображаться серым цветом.

Я пытался сделать следующее: [КОД]

Коллега рассказал мне об использовании атрибута labelFunction в AdvancedDataGridColumn. Я пытался это сделать, но не смог выполнить следующее назначение (идентификатор столбца «тег»): [CODE] tag.itemEditor.htmlText = formattedText; [/ CODE]

Я получаю сообщение об ошибке "Доступ к неопределенному свойству htmlText через ссылку со статическим типом mx.core: IFactory.

Я пытался как явно извлечь TextEput itemEditor (как я это делал для данных набора переопределения), так и использовать labelFunction, но я не мог получить и то, и другое в нужных областях.

Ваша помощь очень ценится, Бонни

1 Ответ

2 голосов
/ 19 мая 2011

Попробуйте создать свой собственный itemRenderer / itemEditor.

Это будет ваша таблица данных:

<fx:Script>
    <![CDATA[
        [Bindable] private var labelsGridArray:Array = [ { tag:"apple" }, { tag:"*banana" }, { tag:"carrot" } ];
    ]]>
</fx:Script>
<mx:DataGrid dataProvider="{labelsGridArray}" >
    <mx:columns>
        <mx:DataGridColumn headerText="Name" itemRenderer="NameItemRenderer"/>
    </mx:columns>
</mx:DataGrid>

И это будет ваш itemRenderer / редактор (NameItemRenderer.mxml)

<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                      xmlns:s="library://ns.adobe.com/flex/spark" 
                      xmlns:mx="library://ns.adobe.com/flex/mx" 
                      focusEnabled="true">
<fx:Script>
    <![CDATA[

        override public function set data(value:Object):void{
            super.data = value;
            if(value.tag.indexOf("*")!= -1){
                lblData.text = "[" + value.tag + "]";
                lblData.setStyle("color",0xFF0000);
            }
            else{
                lblData.text = "" + value.tag ;
                lblData.setStyle("color",0x000000);
            }
        }
    ]]>
</fx:Script>
<s:Label id="lblData" top="0" left="0" right="0" bottom="0"/>

Я использовал для этого обычный mx: Datagrid и искровой MXDataGridItemRenderer, но способ его работы будет таким же, как и для AdvancedDataGrid. Все, что вам нужно сделать, это переопределить набор данных ()

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...