加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读