I have a custom mxml component that is being used as an itemrenderer in a list 
(or datagrid). The component has two states, one that shows a contacts name and 
a button, and the other state is expanded and shows the contacts address and 
the button. The button is used to change states.

I can see both states when I view the itemrenderer component, but when I run my 
app, I only see the base state of the itemrenderer, i.e., the button to expand 
to the second state does not work.

In addition, I tried adding mouseOver and mouseOut to the compenent top level 
(VBox) as the trigger to change state, and when that happened, I noticed the 
button text did change from + to - as expected, so the state did actually 
change, its just that the size of the box did not expand as expected.

I've searched for 3 days on a way to do this, maybe my search text is incorrect 
or I'm just looking in the wrong places, but I can't find anything to help .... 
any ideas??

Here is my custom mxml itemrenderer component:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
        width="100%">

        <mx:Script>
                <![CDATA[
                        private function changeState():void {
                                if (this.currentState == '')
                                        this.currentState = 'ExpandRow';
                                else
                                        this.currentState = '';
                        }
                ]]>
        </mx:Script>

                <mx:HBox width="100%" fontSize="14">
                        <mx:Label text="{data.First_Name} {data.Last_Name}"/>
                        <mx:Spacer width="100%"/>
                        <mx:Label text="{data.Role}" fontSize="12"/>
                        <mx:LinkButton id="expBtn" label="+" 
click="changeState()"/>
                </mx:HBox>
                
        <mx:states>
                <mx:State name="ExpandRow">
                        <mx:AddChild position="lastchild">
                                <mx:VBox width="100%">
                                        <mx:Label text="{data.Street}"/>
                                        <mx:Label text="{data.City} , 
{data.State}   {data.Zip}"/>
                                        <mx:Label text="{data.Country}"/>
                                </mx:VBox>
                        </mx:AddChild>
                        <mx:SetProperty target="{expBtn}" name="label" 
value="-"/>
                </mx:State>
        </mx:states>

</mx:VBox>


Reply via email to