2

Halo AdvancedDataGridコンポーネントを使用しています。このコンポーネントでは、各列のデフォルトのitemEditorはmx.controls.TextInputです。

たとえば、データプロバイダーは次のとおりです。[CODE] [Bindable] private varlabelsGridArray:Array = [{tag: "apple"}、{tag: "* banana"}、{tag: "carrot"}]; [/ CODE ]そしてAdvancedDataGridの定義は次のとおりです:[CODE] [/ CODE]

この例のバナナの場合のように、データプロバイダー配列の文字列の前にアスタリスクが付いている場合は、文字列を角かっこで囲み、灰色で表示する必要があります。

私は次のことを試みました:[コード]

同僚が、AdvancedDataGridColumnのlabelFunction属性の使用について教えてくれました。私はそれを試しましたが、次の割り当てを行うことができませんでした(列のIDは'tag'です):[CODE] tag.itemEditor.htmlText = formatedText; [/ CODE]

「静的タイプmx.core:IFactoryの参照を介した未定義のプロパティhtmlTextへのアクセス」というエラーが発生します。

(オーバーライドセットデータに対して行ったように)TextInput itemEditorを明示的に抽出し、labelFunctionを使用しようとしましたが、両方を正しいスコープに入れることができませんでした。

ボニー、あなたの助けは大歓迎です

4

1 に答える 1

2

独自の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 / 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"/>

これには通常のmx:Datagridとspark MXDataGridItemRendererを使用しましたが、動作方法はAdvancedDataGridでも同じです。あなたがする必要があるのはsetdata()をオーバーライドすることだけです

乾杯

于 2011-05-19T19:37:31.857 に答える