Hi All,

   Myself got the solution for doing the same thing in Action Script.

      Here is the Code.........

 ItemRenderer Component FIle (ItemRendererExample)

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
creationComplete="init()">
  <mx:Script>
        <![CDATA[
                import components.CustomComp1;
                [Bindable]
                public var comp1:CustomComp1 = new CustomComp1();


                public function init():void {
                        comp1.itemData = data;  //if you want you can pass 
entire object
                                     or a specific data field can be
passed
                        panel.addChildAt(comp1,0); // add it to the panel to 
display
                }

        ]]>
  </mx:Script>

  <mx:Panel id="panel" width="100%" height="100%"
        title="Advanced custom components" ................

       <mx:Label text="Result value = {comp1.itemData}"/>
  </mx:panel>

</mx:Canvas>


     Custom Component ( CustomComp1)


package components
{
        import mx.containers.HBox;
        import mx.controls.Alert;
        import flash.events.Event;

        public class CustomComp1 extends Label {
                public function CustomComp1() {
                        super();
                }

                private var displayStr:String; //it can be Object also (based 
on the
requirement)

                public function get itemData():String {

                        return displayStr;
                }
                public function set itemData(value:String):void {
                        displayStr = value;

                        dispatchEvent(new Event("itemData"));
                }
        }
}


It work's fine!!!!!!!!

-sankar



On Mar 14, 10:28 am, Sankar <[email protected]> wrote:
> Hi Sam,
>
>     It work's fine and thanks for your help.Same way i did it in my
> previous application but i couldn't remember and after seeing your
> post i came to know that but any way thanks for your help.
>
>     If you don't mine, can you tell me how to do the same thing in
> action script.Now am trying to do it action script.
>
> Thanks
>   sankar
>
> On Mar 13, 11:17 pm, "[email protected]" <[email protected]>
> wrote:
>
> > Yes Sankar it is possible, you just have to pass the data from the
> > main item renderer to the other components, for this you can create
> > some bindable public property in the other components and bind the
> > value from your data in the item renderer to the other components,
>
> > like following can be the code of your component:
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";>
> >         <mx:Script>
> >                 <![CDATA[
>
> >                         [Bindable]
> >                         public var itemData:Object;
> >                 ]]>
> >         </mx:Script>
> >         <mx:HBox width="100%" paddingRight="15">
> >                 <mx:Label text="{itemData.priority}"/>
> >                 <mx:Label text="{itemData.category}"/>
> >     </mx:HBox>
> > </mx:Canvas>
>
> > And your item renderer bind the itemData property to the data property
> > like this:
>
> > ItemRendererExample
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
> > xmlns:comp="components.*">
> >         <mx:HBox width="100%" paddingRight="15">
> >                     <comp:Comp1 itemdata="{data}"/>
> >                     <comp:Comp2/>
> >         </mx:HBox>
> > </mx:Canvas>
>
> > -Sambhav
>
> > On Mar 13, 6:56 pm, Sankar <[email protected]> wrote:
>
> > > Hi All,
>
> > > As we all know that, we can define the itemRenderer as a component
> > > class or file i.e whether it can be in MXML or in ActionScript and
> > > with the help of containers say HBox/VBox/Canvas etc controls can be
> > > lay down, values can be displayed using the data property as shown
> > > below.
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > layout="absolute">
>
> > >     <mx:Script>
> > >     <![CDATA[
> > >         import mx.collections.ArrayCollection;
>
> > >         [Bindable]
> > >         private var initData:ArrayCollection = new ArrayCollection([
> > >         {task:"meet ravi on
> > > sunday",category:"personal",priority:"Low",dueDate:"09-mar-09"},
> > >         {task:"buy a
> > > book",category:"friends",priority:"Medium",dueDate:"07-mar-09"},
> > >         {task:"play
> > > cricket",category:"friends",priority:"Low",dueDate:"15-mar-09"},
> > >         ]);
> > >     ]]>
> > >     </mx:Script>
>
> > >     <mx:List dataProvider="{initData}" width="50%" height="50%"
> > >     itemRenderer="components.ItemRendererExample"/>
>
> > > </mx:Application>
>
> > >     components.ItemRendererExample file
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
> > > xmlns:dueDate="components.*">
>
> > >     <mx:HBox width="100%" paddingRight="15">
> > >     <mx:Label text="{data.task}" width="100%"/>
> > >     <mx:Label text="{data.dueDate}"/>
> > >     <mx:Label text="{data.priority}"/>
> > >     <mx:Label text="{data.category}"/>
> > >     </mx:HBox>
>
> > > </mx:Canvas>
>
> > > Now my question is instead of displaying all the values in component
> > > file can I display 2 of the values in component file and the 2 other
> > > values in another component file and finally these components can be
> > > included in the main component file(ItemRendererExample)? as shown
> > > below
>
> > >   <mx:List itemRenderer = "components.ItemRendererExample" ..../>
>
> > >     ItemRendererExample
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
> > > xmlns:comp="components.*">
>
> > >         <mx:HBox width="100%" paddingRight="15">
> > >                     <comp:Comp1/>
> > >                     <comp:Comp2/>
> > >         </mx:HBox>
>
> > > </mx:Canvas>
>
> > >         Comp1
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";>
>
> > >         <mx:HBox width="100%" paddingRight="15">
> > >                 <mx:Label text="{data.task}" width="100%"/>
> > >                 <mx:Label text="{data.dueDate}"/>
> > >         </mx:HBox>
>
> > > </mx:Canvas>
>
> > >         Comp2
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";>
>
> > >         <mx:HBox width="100%" paddingRight="15">
> > >                 <mx:Label text="{data.priority}"/>
> > >                 <mx:Label text="{data.category}"/>
> > >         </mx:HBox>
>
> > > </mx:Canvas>
>
> > > I know that, in this case we can't directly use the data property as
> > > {data.task} in the components which are outside of ItemRendererExample
> > > component file. Is it possible by doing ant other extra things?
>
> > > Any help can be appreciated. It can be either in MXML or ActionScript
>
> > > Thanks
> > > -sankar

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to