Hi All,

I have a datagrid which has customItemRenderer. In the itemRenderer I have a
button which onClick adds a child label to the itemRenderer.
Now,in the application, when I click on an item's button a label is added to
it. Then I scoll down and (don't know why?) find this label added at random
itemRenderers.

*Here is the sample application:-*
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
xmlns:local="*" creationComplete="onCreationComplete(event)" >
<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        [Bindable]
        private var arr:ArrayCollection = new ArrayCollection();

        private function onCreationComplete(e:Event):void
        {
            for(var i:int = 0;i<100;i++)
            {
                arr.addItem({text:i.toString()});
            }
        }
    ]]>
</mx:Script>

<mx:DataGrid dataProvider="{arr}" id="dg" width="300" height="100%"
showHeaders="false" >
    <mx:itemRenderer>
        <mx:Component>
            <local:DGItemRenderer/>
        </mx:Component>
    </mx:itemRenderer>

</mx:DataGrid>
</mx:Application>

*Here is the itemRenderer:-*
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"; height="100%"
width="100%">
<mx:Script>
    <![CDATA[
        import mx.controls.Label;

        private var newText:Label = new Label();
        private var added:Boolean = false;

        private function onClick(e:Event):void
        {
            if(!data.added)
            {
                newText.text = "Child "+txt.text+" added";
                hBox.addChild(newText);
            }
            else
            {
                hBox.removeChild(newText);
            }
        }

        override public function set data(value:Object):void
        {
            super.data = value;
            if(value)
            {
                txt.text = value.text;
            }
        }
    ]]>
</mx:Script>
    <mx:HBox id="hBox">
        <mx:Button label="clickMe" click="onClick(event)" />
        <mx:Text id="txt" />
    </mx:HBox>

</mx:Canvas>

Please help finding me the problem.

Thanks and Regards,
Sunny Ladkani

Reply via email to