Frage

Ich verwende die Komponente Halo AdvancedDatagrid, in der der Standardvorstand für jede Spalte mx.controls.textinput ist.

Beispielsweise ist der Datenanbieter: [Code] [Bindbar] Private VAR LabelsgridArray: Array= [{Tag: "Apple"}, {Tag: "* Banane"}, {Tag: "CARROT"}]; [/ Code] Und die AdvancedDataGrid-Definition ist: [Code] [/ Code]

Wenn eine Zeichenfolge aus dem Dataprovider-Array von einem Asterisk vorausgeht - wie bei Bananen in diesem Beispiel der Fall ist, muss die Zeichenfolge von eckigen Klammern umgeben sein und in grauer Farbe angezeigt werden.

Ich habe versucht, folgendes zu tun: [CODE]

Ein Kollege erzählte mir von der Verwendung des Labelfunktionsattributs des AdvancedDataGridColumns. Ich habe das versucht, aber konnte die folgende Aufgabe nicht erstellen (die ID der Spalte ist "Tag"): [Code] tag.itemeditor.htmltext= formattedtext; [/ code]

Ich erhalte einen Fehler "Zugriff auf möglicherweise undefinierte Eigenschaft HTMLText durch eine Referenz mit statischem Typ MX.Core: IFACTORY.

Ich habe versucht, den TextInput-ArtikelDitor sowohl explizit zu extrahieren (wie ich für die Override-Set-Daten getan) und verwenden Sie die Labelfunktion, aber ich konnte nicht beide in den richtigen Scopes sein.

Ihre Hilfe wird sehr geschätzt, Bonnie

War es hilfreich?

Lösung

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top