自定义ItemRenderer调用主程序函数


预览地址 源码

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            public function activeChange(v:Boolean){
                Alert.show('item:'+dg.selectedIndex +' active:'+v);
                dg.selectedItem.active = v+'';
            }
        ]]>
    </mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>ccoenraets@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>jwall@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>maurice@fictitious.com</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>mjones@fictitious.com</email>
            <active>true</active>
        </employee>
    </mx:XMLList>

    <mx:Panel title="DataGrid Control Example" height="100%" width="100%"
        paddingTop="10" paddingLeft="10" paddingRight="10">
        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn dataField="actived" headerText="Active">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Canvas>
                                <mx:CheckBox id="chk" selected="{(data.active == 'true')?true:false}" change="this.parentDocument.activeChange(chk.selected);"/>
                            </mx:Canvas>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>     
    </mx:Panel>
</mx:Application><?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            public function activeChange(v:Boolean){
                Alert.show('item:'+dg.selectedIndex +' active:'+v);
            }
        ]]>
    </mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>ccoenraets@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>jwall@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>maurice@fictitious.com</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>mjones@fictitious.com</email>
            <active>true</active>
        </employee>
    </mx:XMLList>

    <mx:Panel title="DataGrid Control Example" height="100%" width="100%"
        paddingTop="10" paddingLeft="10" paddingRight="10">
        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn dataField="actived" headerText="Actived">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Canvas>
                                <mx:CheckBox id="chk" selected="{data.active}" change="this.parentDocument.activeChange(chk.selected)"/>
                            </mx:Canvas>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>      
    </mx:Panel>
</mx:Application>

Share

3 条评论

  1. weihao.ma 的头像 weihao.ma 说:
    Here’s the performance-based advice endorsed by Flex Framework engineers: avoid
    containers inside the DataGrid cell at all reasonable cost
  2. dzq 的头像 dzq 说:
    Thanks![smile]
  3. mis2000lab 的头像 mis2000lab 说:
    Mr. Du:
    Thanks for your sharing.
    It's Very Helpful for me.
    Thanksssss~

留下评论