flex datagrid 中实现combobox联动
发布时间:2020-12-15 04:24:53 所属栏目:百科 来源:网络整理
导读:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? flex?datagrid? 中实现 combobox 联动 ?????项目需要:在 datagrid? 中实现 combobox 联动 ?????我搞了好久都没有成功,最后在 Flex 终极幻想好友?北京——无阻( 24070990 )的帮助下终于做成功了。在这
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?flex?datagrid?中实现combobox联动 ?????项目需要:在datagrid?中实现combobox联动 ?????我搞了好久都没有成功,最后在Flex终极幻想好友?北京——无阻(24070990)的帮助下终于做成功了。在这里对他说声谢谢。现在分享一下,实现的代码。 ? ?源代码下载地址:http://download.csdn.net/detail/wuxiaokaixinguo/5216461
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:map="zdims.map.*" xmlns:control="zdims.control.*" xmlns:drawing="zdims.drawing.*" > <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; //DataGrid中的数据源 [Bindable] public var dgColl:ArrayCollection = new ArrayCollection( [{logic:'并且',property:'FID',operator:'=',value:1}] ); //逻辑数据源 [Bindable] public var logicColl:ArrayCollection= new ArrayCollection( ["并且","或者"] ); //属性数据源 [Bindable] public var propertyColl:ArrayCollection = new ArrayCollection( ["FID","名称"] ); //算法符数据源 [Bindable] public var operatorColl:ArrayCollection = new ArrayCollection( ["=",">","<",">=","<=","<>"] ); [Bindable] public var operatorColl2:ArrayCollection = new ArrayCollection( ["=","LIKE"] ); //值也设置成下拉列表框 [Bindable] public var valueColl:ArrayCollection = new ArrayCollection( ["90","91","92","93","94","95"] ); //================添加操作============================= public function btn_add_clickHandler():void{ dgColl.addItem({logic:'并且',value:2}); dgColl.refresh(); } //================删除操作============================ public function btn_del_clickHandler():void{ if(dgComplex.selectedIndex==-1) { Alert.show("请选择一列删除!!!"); } else { dgColl.removeItemAt(dgComplex.selectedIndex); } } ]]> </fx:Script> <mx:DataGrid id="dgComplex" dataProvider="{dgColl}" editable="true" x="10" y="81" height="262" width="317"> <mx:columns> <mx:DataGridColumn headerText="逻辑" dataField="logic" editorDataField="value" > <mx:itemEditor> <fx:Component> <mx:HBox> <fx:Script> <![CDATA[ public function get value():Object { if(ddlLogic.selectedItem == null) return null; return ddlLogic.selectedItem; } override public function set data(value:Object):void{ super.data =value; for each(var item:Object in ddlLogic.dataProvider) { value.logic = ddlLogic.selectedItem; } } ]]> </fx:Script> <s:DropDownList id="ddlLogic" labelField="逻辑" dataProvider="{outerDocument.logicColl}" width="100%" selectedIndex="0"/> </mx:HBox> </fx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="属性" dataField="property" editorDataField="value" > <mx:itemEditor> <fx:Component> <mx:HBox> <fx:Script> <![CDATA[ public function get value():Object { if(ddlProperty.selectedItem == null) return null; return ddlProperty.selectedItem; } override public function set data(value:Object):void{ super.data =value; for each(var item:Object in ddlProperty.dataProvider) { value.property = ddlProperty.selectedItem; } } ]]> </fx:Script> <s:DropDownList id="ddlProperty" labelField="属性" dataProvider="{outerDocument.propertyColl}" width="100%" selectedIndex="0"/> </mx:HBox> </fx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="运算符" dataField="operator" editorDataField="value" > <mx:itemEditor> <fx:Component> <mx:HBox> <fx:Script> <![CDATA[ import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; import mx.controls.Alert; public function get value():Object { if(ddlOperator.selectedItem == null) return null; return ddlOperator.selectedItem; } override public function set data(value:Object):void{ super.data =value; var dg:DataGrid = this.owner as DataGrid; if(dg && data) { var dg2:DataGridColumn = dg.columns[1] as DataGridColumn; if(data[dg2.dataField]=="FID") { /* Alert.show("到此!!!"); */ ddlOperator.dataProvider = outerDocument.operatorColl; for each(var item:Object in ddlOperator.dataProvider) { value.operator = ddlOperator.selectedItem; } } if(data[dg2.dataField]=="名称") { ddlOperator.dataProvider = outerDocument.operatorColl2; for each(var item2:Object in ddlOperator.dataProvider) { value.operator = ddlOperator.selectedItem; } } } } ]]> </fx:Script> <s:DropDownList id="ddlOperator" labelField="运算符" width="100%" selectedIndex="0"/> <!-- dataProvider="{outerDocument.operatorColl}" --> </mx:HBox> </fx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="值" dataField="value" editorDataField="value" > <mx:itemEditor> <fx:Component> <mx:HBox> <fx:Script> <![CDATA[ public function get value():Object { if(ddlValue.selectedItem == null) { return ddlValue.text; } return ddlValue.selectedItem; } override public function set data(value:Object):void{ super.data =value; for each(var item:Object in ddlValue.dataProvider) { value.value = ddlValue.selectedItem; } } ]]> </fx:Script> <mx:ComboBox id="ddlValue" labelField="值" editable="true" dataProvider="{outerDocument.valueColl}" width="100%" selectedIndex="0"/> </mx:HBox> </fx:Component> </mx:itemEditor> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> <s:Button x="13" y="364" width="56" height="27" label="添加" click="btn_add_clickHandler();"/> <s:Button x="78" y="364" width="56" height="27" label="删除" click="btn_del_clickHandler();"/> </s:Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |