Domanda

Sto usando il componente Halo AdvancedDataGrid, in cui il capitale editore predefinito per ogni colonna è mx.controls.Textinput.

Ad esempio, il fornitore di dati è: [Codice] [BINDABILE] Private Var LabelsGridarray: array= [{tag: "Apple"}, {tag: "* banana"}, {tag: "carota"}]; [/ codice] E la definizione AdvancedDataGrid è: [Codice] [/ Codice]

Se una stringa dall'array DataProvider è preceduta da un asterisco - come nel caso della banana in questo esempio: la stringa deve essere circondata da staffe quadre e viene visualizzata in un colore grigio.

Ho provato a fare quanto segue: [CODICE]

Un collega mi ha parlato di usare l'attributo labelfunction AdvancedDataGridColumn. Ho provato che ma non è stato in grado di eseguire il seguente incarico (l'ID della colonna è 'tag'): [Codice] Tag.Itemeditor.htmlText= formattatoText; [/ Codice]

Ottengo errori "Accesso di proprietà possibilmente indefinita htmltext tramite un riferimento con tipo statico MX.Core: IFActory.

Ho provato ad estrarre esplicitamente il textInput Itereditor (come ho fatto per i dati di impostazione di override) e utilizzare la labelfunzione, ma non potevo ottenere entrambi negli ambiti corretti.

Il tuo aiuto è molto apprezzato, Bonnie

È stato utile?

Soluzione

Try creating your own itemRenderer / itemEditor.

This would be your datagrid:

<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>

And this would be your itemRenderer/editor (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"/>

I have used a normal mx:Datagrid and a spark MXDataGridItemRenderer for this, but the way it works will be the same for the AdvancedDataGrid. All you need to do is override set data()

Cheers

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top