刚开始学习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=="1"?"工业A":"工业B"}" 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("-")[0], data.SIGNDATE.split("-")[1]-1, data.SIGNDATE.split("-")[2].split("T")[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> |