Question

J'utilise le composant Halo AdvancedDataGrid, dans lequel l'itemEditor par défaut pour chaque colonne est MX.Controls.textInput.

Par exemple, le fournisseur de données est: [Code] [Reliable] privé var labelsGridarray: Array= [{tag: "Apple"}, {tag: "* banane"}, {tag: "carotte"}]; [/ code] Et la définition AdvancedDataGrid est: [Code] [/ code]

Si une chaîne de la matrice DataProvider est précédée d'un astérisque - comme c'est le cas pour la banane dans cet exemple - la chaîne doit être entourée de crochets et être affichée dans une couleur grise.

J'ai essayé de faire ce qui suit: [CODE]

Un collègue m'a dit d'utiliser l'attribut de labellence de AdvancedDataGridColumn. J'ai essayé cela mais n'a pas pu effectuer l'affectation suivante (l'identifiant de la colonne est "tag"): [CODE] TAG.ITEMEDORTOR.HTMLTEXT= FormattedText; [/ code]

Je reçois une erreur "Accès d'une propriété éventuellement non définie HTMLText via une référence avec type statique MX.Core: IFACTORY.

J'ai essayé d'extraire explicitement le TextInput Itemeditor (comme je l'ai fait pour les données de réglage de remplacement) et utilisez labelfunction, mais je ne pouvais pas obtenir les deux pour être dans les cessions correctes.

Votre aide est très appréciée, Bonnie

Était-ce utile?

La solution

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top