重金属项目笔记

前台 flex

后台 Java

前台通过FlexViewer调用ArcGIS服务

private var areaListCollection:XMLListCollection=new XMLListCollection(); 
private var areasdata: ArrayCollection;  
[Bindable]
private var xmls:ArrayCollection = new ArrayCollection();
[Bindable]
private var treeXml:XML =
<node label="监控点">
    <node label='中国' areaCode='000000000000' areaLevel='1' subAreaNum='34'>
    </node>
</node>;
<mx:Tree id="tree1" x="5" y="5" width="400" height="600" 
    dataProvider="{treeXml}"
    selectedItem="{}"
    itemClick="tree_itemClick(event);"
    labelField="@label" selectionColor="#3DDDDB" showRoot="false">
</mx:Tree>

点击事件处理函数

private function tree_itemClick(evt:ListEvent):void {
	var item:Object = evt.currentTarget.selectedItem
	var xml:XML=tree1.selectedItem as XML;
	var areacode:String = tree1.selectedItem.@areaCode; 
	var areaLevel:int = tree1.selectedItem.@areaLevel;
	var variables:URLVariables=new URLVariables("areaCode="+areacode +"&areaLevel="+areaLevel);

	var httpService:HTTPService=new HTTPService();
	httpService.useProxy=false;
	httpService.resultFormat="e4x";
	httpService.url="/lvfulong/getSubAreaData";
	httpService.addEventListener(ResultEvent.RESULT,loadComplete);
	httpService.addEventListener(FaultEvent.FAULT,faultHandler);
	try
	{
		if(!tree1.selectedItem.hasComplexContent())//判断是否已经有子节点
			httpService.send(variables);
		trace("获取数据成功!");
	}
	catch(error:Error)
	{
		trace("获取数据失败:"+error);
	} 
}
private function loadComplete(event:ResultEvent):void{
	var result:XML=new XML(event.result.toString());
	areaListCollection.source = result.area;
	areasdata = new ArrayCollection(areaListCollection.toArray()); 
	for(var i:int=0;i<areasdata.length;i++){  
		var o:Object = areasdata.getItemAt(i); 
		tree1.selectedItem.appendChild("<node label='"+o["areaName"]+"' areaCode='"+o["areaCode"]+"' areaLevel='"+o["areaLevel"]+"' subAreaNum='"+o["subAreaNum"]+"'></node>");
	}
}
private function faultHandler(event:FaultEvent):void{
	Alert.show(event.toString());
}

Servlet如下

response.setCharacterEncoding("UTF-8");
response.setHeader("content-type","text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
String areaCode=request.getParameter("areaCode");
int areaLevel = Integer.parseInt(request.getParameter("areaLevel"));
//		String sql = "select * from area where areaCode = '" + areaCode +"'";
//		System.err.println(areaCode.substring(0, 2));
String sql = "";
switch (areaLevel) {
case 1://国
	sql = "select * from area where areaCode like '"+areaCode.substring(0, 0)+"__0000000000' and areaCode != '"+areaCode+"'";
	break;
case 2://省级,查市
	sql = "select * from area where areaCode like '"+areaCode.substring(0, 2)+"__00000000' and areaCode != '"+areaCode+"'";
	break;
case 3://市级,查县
	sql = "select * from area where areaCode like '"+areaCode.substring(0, 4)+"__000000' and areaCode != '"+areaCode+"'";
	break;
case 4://县级,查镇
	sql = "select * from area where areaCode like '"+areaCode.substring(0, 6)+"___000' and areaCode != '"+areaCode+"'";
	break;
case 5://镇级,查村
	sql = "select * from area where areaCode like '"+areaCode.substring(0, 9)+"___' and areaCode != '"+areaCode+"'";
	break;
case 6://村级

	break;
default:
	break;
}

System.out.println(sql);
System.out.println("----");
JAXBContext context;
Connection connection = DBConnection.getConnection();
Statement statement = null;
ResultSet resultSet = null;
try {
	List<Area>areas = new ArrayList<Area>();
	
	statement = connection.createStatement();
	resultSet = statement.executeQuery(sql);
	
	StringBuffer resultXML=new StringBuffer();
	resultXML.append("<?xml version='1.0' encoding='utf-8'?>");
	resultXML.append("<root>");
	while (resultSet.next()) {
		resultXML.append("<area>");
		resultXML.append("<areaCode>");
		resultXML.append(resultSet.getString("areaCode"));
		resultXML.append("</areaCode>");
		resultXML.append("<areaName>");
		resultXML.append(resultSet.getString("areaName"));
		resultXML.append("</areaName>");
		resultXML.append("<areaLevel>");
		resultXML.append(resultSet.getInt("areaLevel"));
		resultXML.append("</areaLevel>");
		resultXML.append("<subAreaNum>");
		resultXML.append(resultSet.getInt("subAreaNum"));
		resultXML.append("</subAreaNum>");
		resultXML.append("</area>");
	}
	resultXML.append("</root>");
	System.out.println(resultXML);
	out.print(resultXML.toString());
	/*测试数据
	out.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	out.print("<area>");
		out.print("<subAreaNum>");
			out.print("14");
		out.print("</subAreaNum>");
		out.print("<areaName>");
			out.print("湖北");
		out.print("</areaName>");
		out.print("<areaLevel>");
			out.print("2");
		out.print("</areaLevel>");
		out.print("<areaCode>");
			out.print("420000000000");
		out.print("</areaCode>");
	out.print("</area>");
	*/
} catch (Exception e) {
	//e.printStackTrace();
	//当点击村级节点时,case 6,会抛异常
}finally{
	DBConnection.close(resultSet, statement, connection);
}

返回的xml数据如下

<?xml version="1.0" encoding="utf-8"?>
<root>
  <area>
    <areaCode>420100000000</areaCode>
    <areaName>武汉市</areaName>
    <areaLevel>3</areaLevel>
    <subAreaNum>13</subAreaNum>
  </area>
  <area>
    <areaCode>420500000000</areaCode>
    <areaName>宜昌市</areaName>
    <areaLevel>3</areaLevel>
    <subAreaNum>13</subAreaNum>
  </area>
  <area>
    <areaCode>420600000000</areaCode>
    <areaName>襄阳市</areaName>
    <areaLevel>3</areaLevel>
    <subAreaNum>9</subAreaNum>
  </area>
  <area>
    <areaCode>421000000000</areaCode>
    <areaName>荆州市</areaName>
    <areaLevel>3</areaLevel>
    <subAreaNum>8</subAreaNum>
  </area>
  <area>
    <areaCode>421100000000</areaCode>
    <areaName>黄冈市</areaName>
    <areaLevel>3</areaLevel>
    <subAreaNum>10</subAreaNum>
  </area>
</root>

flex tree添加右键菜单

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
<mx:Script>
	<!--[CDATA[
		import mx.controls.Alert;
	
		public var newBuildMenuItem:ContextMenuItem;//菜单项变量
		
		
            private function init(): void//初始化函数
            {   
                createTreeMenuItem();   
                tree.contextMenu = getTreeContxtMenu();   
            }   
            public function createTreeMenuItem(): void//菜单项创建函数,并添加菜单监听器
            {   
                newBuildMenuItem = new ContextMenuItem("新建");   
                newBuildMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, newBuildHandler2);   
            }   
               
            private function getTreeContxtMenu(): ContextMenu//将菜单项目添加到菜单中
            {   
                var contextMenu: ContextMenu = new ContextMenu();   
                contextMenu.hideBuiltInItems();   
                contextMenu.customItems.push(newBuildMenuItem);   
                return contextMenu;   
            }  
            public function newBuildHandler2(event:Event):void//点击菜单执行函数
            {
            	Alert.show("这是新建的菜单点击后执行的函数");
            }
	]]-->
</mx:Script>
	<mx:Tree id="tree" x="31" y="10"  creationComplete="init()"></mx:Tree>
	
</mx:Application>

Flex Tree 在鼠标移到的时候显示 ToolTip  

private function getToolTip(obj:Object):String{
  var xml:XML=obj as XML;
  return obj.@areaName;
}
<mx:Tree id="projects" width="207" height="100%"    
   change="selectChange(event)" 
   dataProvider="{projectdepots}" labelField="@name"  
   dataTipFunction="getToolTip" showDataTips="true"/>


本文出自 “优赛工作室” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1545853

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值