So wenden Sie in ActionScript 3.0-Formatierung in ActionScript 3.0-Formatierung an.
-
16-11-2019 - |
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
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