flex4学习开篇 如何在datagrid中插入DropDownList,并且获取selectedItem

来源:互联网 发布:js遍历dom树 编辑:程序博客网 时间:2024/04/26 05:49

刚开始学习flex,一切都是还在摸索阶段,目前做的项目遇到了一个问题,datagrid里itemRenderer的值无法获取。

1、从itemRenderer获取外面的值可以用outerDocument方式;

2、但是外层如何获取itemRenderer里的呢?比如说DropDownList的selectedItem

我把握的代码贴上来,并且解释下思路。各位大侠当然有更好的办法,勿喷我,微笑我只是个菜鸟


                <s:GridColumn dataField="TYPE"
                              editable="true"
                              headerText="类型"
                              labelFunction="lbAPPLICATIONTYPEFun">    
                    <s:itemRenderer>
                        <fx:Component>
                            <s:GridItemRenderer>
                                <s:TextInput id="tiItemDrop"
                                             text="{data.TYPE==&quot;1&quot;?&quot;工业A&quot;:&quot;工业B&quot;}"
                                             width="100%" height="100%"
                                             borderVisible="false"
                                             editable="false">
                                </s:TextInput>    
                                <s:TextInput id="tiItemDropFalse"
                                             text="@{data.TYPE}"
                                             width="100%" height="100%"
                                             borderVisible="false"
                                             visible="false"
                                             editable="false">
                                </s:TextInput>                                    
                                <s:DropDownList id="dpDataList"
                                                enabled="{data.opera}"
                                                visible="{data.opera}"
                                                width="100%" height="100%"
                                                selectedIndex="{Number(data.TYPE)-1}"
                                                close="on_dbChooseClose_Handler(event)">

                                    <s:ArrayList>
                                        <fx:Object data="1" label="工业A"/>                            
                                        <fx:Object data="2" label="工业B"/>
                                    </s:ArrayList>
                                </s:DropDownList>
                                <fx:Script>
                                    <![CDATA[                                    
                                        import spark.events.DropDownEvent;
                                        
                                        protected function on_dbChooseClose_Handler(event:DropDownEvent):void
                                        {
                                            ClosedpDataList()
                                        }    

                                        public function ClosedpDataList():void
                                        {
                                            tiItemDropFalse.text=dpDataList.selectedItem.data;
                                            tiItemDrop.text=dpDataList.selectedItem.label;
                                            //dpDataList.visible=false;

                                        }                                        
                                    ]]>
                                </fx:Script>                                
                            </s:GridItemRenderer>
                        </fx:Component>    
                    </s:itemRenderer>
                </s:GridColumn>   



上面代码中标红的地方是重要的思路,我做了一个隐藏域,把DropDownList选择出来的值赋给这个隐藏域,然后通过隐藏域与外面的

text="@{data.TYPE}"    进行双向绑定,这样我就同时修改了这个值,这个只是我的思路,通过这个思路同时解决了我在datagrid里插入

dataField的问题,也附上我的代码,思路一样,不做解释:

                <s:GridColumn dataField="SIGNDATE"
                              editable="true"
                              headerText="签约时间"
                              labelFunction="lbAPPLICATIONDATEFun">
                    <s:itemRenderer>
                        <fx:Component>
                            <s:GridItemRenderer>
                                <s:TextInput id="tiItemDateField"
                                             text="{DateUtils.format(data.SIGNDATE,DateUtils.FMT_ISO_DATE)}"
                                             width="100%" height="100%"
                                             borderVisible="false"
                                             editable="{data.opera}">
                                </s:TextInput>    
                                <s:TextInput id="tiItemDateFieldFalse"
                                             text="@{data.SIGNDATE}"
                                             width="100%" height="100%"
                                             borderVisible="false"    
                                             visible="false"                                            
                                             editable="{data.opera}">
                                </s:TextInput>                                    
                                <mx:DateField id="dfDataList"
                                              width="100%" height="100%"
                                              editable="false"    
                                              visible="{data.opera}"
                                              dayNames="{DateUtils.DAYS}"
                                              formatString="{DateUtils.FMT_ISO_DATE}"
                                              monthNames="{DateUtils.MONTHS}"
                                              selectedDate="{ new Date(data.SIGNDATE.split(&quot;-&quot;)[0],
                                                                         data.SIGNDATE.split(&quot;-&quot;)[1]-1,
                                                                         data.SIGNDATE.split(&quot;-&quot;)[2].split(&quot;T&quot;)[0])} "
                                              change="on_dbChooseClose_Handler()"/>
                                    <fx:Script>
                                        <![CDATA[    
                                            import Utility.Time.DateTime;
                                            import Utility.Time.DateUtils;                                            
                                            
                                            protected function on_dbChooseClose_Handler():void
                                            {
                                                ClosedfDataList()
                                            }    
                                            
                                            public function ClosedfDataList():void
                                            {        
                                                tiItemDateField.text=DateUtils.format(dfDataList.selectedDate,DateUtils.FMT_ISO_DATE);
                                                tiItemDateFieldFalse.text=DateUtils.format(dfDataList.selectedDate,DateUtils.FMT_ISO_DATE)+"T";                                                                                                
                                            }                                                
                                    
                                        ]]>
                                    </fx:Script>
                            </s:GridItemRenderer>
                        </fx:Component>
                    </s:itemRenderer>                
                </s:GridColumn>   










原创粉丝点击