Flex怎样将数据库的信息读取到Tree控件中,请大侠,高手,大牛们帮忙解答谢谢!

Faycon 2013-02-28 09:52:16
后台C#写的WebServices的代码是:

前台Flex代码是:
<?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">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<mx:WebService id="WebServiceTest"
wsdl="http://localhost/wenling/Service.asmx?WSDL"
useProxy="false"
fault="Alert.show(event.fault.faultString),'出错了'"
result="onResult(event)">
<mx:operation name="getConnection"/>
</mx:WebService>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
public var arr:XML = new XML(); //定义一个变量用来接收数据
public var isSucceed:Boolean = new Boolean(false); //定义一个变量用来判断是否登录成功



private function init():void{
//把信息封装起来
var strSQL:String = "SELECT Name FROM SysObjects Where XType='U' and Name like 'A%' and len(Name)=7 order by Name";
//调用WebService里自定义的方法getConnection(string sql);
this.WebServiceTest.getConnection(strSQL);
}


private function onResult(event:ResultEvent):void{
arr= XML(event.result);
this.mytree.dataProvider = arr;
}

private function tree_change(event:Event):void{
var str:String = mytree.selectedItem.@label;
Alert.show(str);

}


]]>
</fx:Script>
<mx:Tree x="55" y="10" height="268" width="164" id="mytree"
change="tree_change(event)" creationComplete="init();" >
</mx:Tree>
</s:Application>


WebServices获取的信息是:


程序运行的效果是:


...全文
260 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Faycon 2013-03-25
  • 打赏
  • 举报
回复
我的labelField设置了,是由于OnResult以前的函数写错了。问题已经解决了,上面我贴的代码就是正确的。
地龙神威 2013-03-24
  • 打赏
  • 举报
回复
你的Tree控件,labelField属性没设置吧
Faycon 2013-03-20
  • 打赏
  • 举报
回复
正确代码:如下
<?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"
			   width="433" height="528" minWidth="955" minHeight="600"
			   creationComplete="initWeb();sendResult();">
	<fx:Declarations>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.collections.ICollectionView;
			import mx.collections.XMLListCollection;
			import mx.controls.Alert;
			import mx.rpc.AbstractOperation;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.rpc.soap.WebService;
		
			public var isSucceed:Boolean = new Boolean(false); //定义一个变量用来判断是否登录成功
			
			
			public var web:WebService;
			/* 	public var codeToName:ArrayCollection = new ArrayCollection([{WellCode:A000001,},{},{},{}]); */
			public function initWeb():void{
				//初始化Web服务,添加Web服务URL地址
				web = new WebService();
				//加载Web服务
				web.loadWSDL("http://localhost/wenling/Service.asmx?WSDL");
			}
			
			public function sendResult():void{
				//Web查询方法
				var oper:AbstractOperation  = web.getOperation("getConnection");
				var strSql:String = "SELECT Name FROM SysObjects Where XType='U' and Name like 'A%' and len(Name)=7 order by Name"; 
				/* var strSql:String = "select top 10 ID from A000001"; */
				oper.send(strSql);
				web.addEventListener(ResultEvent.RESULT,OnResult);
				web.addEventListener(FaultEvent.FAULT,OnFault);
				
				
			}
			
	
			[Bindable]
			public var arr:XML = new XML(); //定义一个变量用来接收数据
			
			public function OnResult(event:ResultEvent):void{
			      arr= XML(event.result);
				/*   this.mytree.dataProvider = arr.Table.Name; */
				  var xl:XMLList = arr.Table.Name;
				  
				  for each (var xx:XML in xl) 
				  {
					  xx.@Name = xx.toString();
					  delete xx.children()[0];
				  }
				  var xc:XMLListCollection = new XMLListCollection(xl);
				  mytree.dataProvider = xc;

				  
			}
			public function OnFault(event:FaultEvent):void{
				 var s:String = event.message.toString();
				Alert.show(s);	 
			}
			
			
			private function tree_change(event:Event):void{
				var str:String = mytree.selectedItem.@Name;
				Alert.show("选中的要素为:" + str);
				
			}
			
		/* 	private function treeFun(item:XML):String{
				return item.@Name;
			} */
			
			
		]]>
	</fx:Script>
	<mx:Tree x="2" y="3" height="506" width="421" id="mytree"  showRoot="false"  
			 change="tree_change(event)" labelField="@Name" ><!--  labelFunction="treeFun">-->
	</mx:Tree>
	
</s:Application>
Faycon 2013-03-19
  • 打赏
  • 举报
回复
怎么没有人来帮忙呀,自己顶一下!!!
Faycon 2013-02-28
  • 打赏
  • 举报
回复
希望得到的效果是

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧