`
wqb127
  • 浏览: 4150 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

flex学习之联动下拉框实现

阅读更多

学习FLEX己有两个来月,总想写点什么,今天做了联动下拉的功能,先记下来先! 因为要实现地区的联动选择,先省再市再地区,在网上找了个全国地区的数据,先生成表导入到数据库,再用Hibernate生成实体类与XML文件: 

TbArea.java
package com.zn.entity;

import java.util.HashSet;
import java.util.Set;

/**
 * TbArea entity.
 * 
 * @author MyEclipse Persistence Tools
 */

public class TbArea implements java.io.Serializable {

	// Fields

	private String areaCode;
	private String areaName;
	private String parentAreaCode;
	private String root;
	private Short zone;
	private String navigateUrl;
	private Short areaType;
	private Set usercustems = new HashSet(0);

	// Constructors

	/** default constructor */
	public TbArea() {
	}

	/** full constructor */
	public TbArea(String areaName, String parentAreaCode, String root,
			Short zone, String navigateUrl, Short areaType, Set usercustems) {
		this.areaName = areaName;
		this.parentAreaCode = parentAreaCode;
		this.root = root;
		this.zone = zone;
		this.navigateUrl = navigateUrl;
		this.areaType = areaType;
		this.usercustems = usercustems;
	}

	// Property accessors

	public String getAreaCode() {
		return this.areaCode;
	}

	public void setAreaCode(String areaCode) {
		this.areaCode = areaCode;
	}

	public String getAreaName() {
		return this.areaName;
	}

	public void setAreaName(String areaName) {
		this.areaName = areaName;
	}

	public String getParentAreaCode() {
		return this.parentAreaCode;
	}

	public void setParentAreaCode(String parentAreaCode) {
		this.parentAreaCode = parentAreaCode;
	}

	public String getRoot() {
		return this.root;
	}

	public void setRoot(String root) {
		this.root = root;
	}

	public Short getZone() {
		return this.zone;
	}

	public void setZone(Short zone) {
		this.zone = zone;
	}

	public String getNavigateUrl() {
		return this.navigateUrl;
	}

	public void setNavigateUrl(String navigateUrl) {
		this.navigateUrl = navigateUrl;
	}

	public Short getAreaType() {
		return this.areaType;
	}

	public void setAreaType(Short areaType) {
		this.areaType = areaType;
	}

	public Set getUsercustems() {
		return this.usercustems;
	}

	public void setUsercustems(Set usercustems) {
		this.usercustems = usercustems;
	}

}

  TbArea.hbm.xml TbAreaDAO.java 就不贴出来数据访问是用的remoting-config.xml来控制的. 

<destination id="Service">
		<properties>
			<source>com.zn.service.BaseService</source>
		</properties>
	</destination>

 

public class BaseService {

	/**
	 * @param wqb
	 */
	public BaseService(){}
	
	public String hello(){
		System.out.println("---------hello-----------------");
		return "hehe";
	}

	@SuppressWarnings("unchecked")
	public List<TbArea> getArea(String areaCode){
		TbAreaDAO ta=new TbAreaDAO();
		List<TbArea> arealist=new ArrayList<TbArea>();
		if(areaCode==null){
			arealist=ta.findByAreaType(1);
		}else{
			arealist=ta.findByParentAreaCode(areaCode);
		}
		return arealist;
	}
}

 再就到FLEX的页面了:

<mx:Script>
		<![CDATA[
			import mx.rpc.events.FaultEvent;
			import mx.validators.ValidationResult;
			import mx.rpc.events.ResultEvent;
			import mx.collections.ArrayCollection;
			[Bindable]
			var chageArea:int=0;
			function init():void{
			service.getArea(null);
			}
			function getAreaResult(event:ResultEvent):void{
				if(chageArea==0){
					area1.dataProvider=event.result;
				}else if(chageArea==1){
					area2.dataProvider=event.result;
				}else{area3.dataProvider=event.result;}
			}
			function getAreaFault(event:FaultEvent):void{
			
			}
			function chageArea1():void{
				chageArea=1;
				area3=null;
				service.getArea(area1.selectedItem.areaCode);
			}
			function chageArea2():void{
				chageArea=2;
				service.getArea(area2.selectedItem.areaCode);
			}
			
		]]>
	</mx:Script>
	
	
	<mx:RemoteObject id="service" destination="Service">
		<mx:method name="getArea" result="getAreaResult(event)" fault="getAreaFault(event)"/>
	</mx:RemoteObject>

<mx:FormItem label="地区:" width="100%" fontSize="12">
<mx:HBox width="100%">
<mx:ComboBox fontSize="12" id="area1" width="75" labelField="areaName" change="chageArea1()"></mx:ComboBox>
<mx:Label text="省" textAlign="center" width="20" height="100%" fontSize="14"/>
<mx:ComboBox width="80" fontSize="12" id="area2" labelField="areaName" change="chageArea2()"></mx:ComboBox>
<mx:Label text="市" width="20"/>
<mx:ComboBox width="120" id="area3" labelField="areaName"></mx:ComboBox>
</mx:HBox>
</mx:FormItem>

 

基本上重要实现代码都有了,先留在这也许下次用得上,呵呵!

分享到:
评论
1 楼 huaz98 2009-07-29  
帅哥,代码贴着code 里面 多好,不过谢谢共享

相关推荐

Global site tag (gtag.js) - Google Analytics