<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Panel>
<mx:VBox>
<mx:HBox>
<mx:Label text="username" />
<mx:TextInput id="nam" />
</mx:HBox>
<mx:HBox>
<mx:Label text="password" width="61" />
<mx:TextInput password="true" id="pwd" />
</mx:HBox>
<mx:Button label="login" click="articlesys.adminlogin.send()" />
</mx:VBox>
</mx:Panel>
<mx:Button label="invoke" width="203" click="articlesys.getBoards.send()"/>
<mx:DataGrid id="dg1" dataProvider="getRsArray()" cellPress="dgCellClick(event)"><!-- dgCellClick 中的event接收 DataGrid发送的cellPress事件消息 -->
</mx:DataGrid>
<mx:TextArea id="ta" width="296" height="129" text="{articlesys.adminlogin.result}" />
<mx:WebService serviceName="articlesys" id="articlesys"><!-- 只要在flex-config.xml文件里面配置一个named的webservices就可以在这里用指定的名字直接使用 -->
<mx:operation name="adminlogin">
<mx:request>
<password>{pwd.text}</password>
<username>{nam.text}</username>
</mx:request>
</mx:operation>
<mx:operation name="getBoards" result="rstogrid()">
<mx:request>
{ta.text}
</mx:request>
</mx:operation>
</mx:WebService>
<mx:Script>
<![CDATA[
var RSStr:String;
//rstogrid是处理从webservice接受的字符串, 把它处理成数组以供DataGrid使用
function rstogrid(){ var rs_array:Array = new Array(); RSStr = articlesys.getBoards.result; var doc_xml:XML=new XML(); doc_xml.parseXML(RSStr); var out_str:String = new String(); var xnod_node:XMLNode=doc_xml.firstChild;//将第一个节点附值给XMLNode对象 //var xchild_node:XMLNode=xnod_node.firstChild; var row_obj; var i,j; for(j=0;xnod_node != null;j++){ //xchild_node = xnod_node.firstChild; row_obj = new Object();//每次 new 一下就不会出现重复的结果,不然这个数组老是指向同一个内存地址 for (i =(xnod_node.childNodes.length-1); i>=0; i--) {//由于节点不是textNode所以需要以下面这种方式调用他的值 row_obj[xnod_node.childNodes[i].nodeName]=xnod_node.childNodes[i].firstChild.nodeValue;//直接给Object型数组的元素取名,这里是给元素取名不是给Object对象 //row_obj[i]=xnod_node.childNodes[i].firstChild.nodeValue;//这种方法得到的元素名就只是数字 } rs_array.push(row_obj);//将对象压入另一个数组,形成DataGrid可以使用的二维数组 xnod_node = xnod_node.nextSibling; } dg1.dataProvider = rs_array; //dg1.dataProvider = articlesys.getBoards.result; ta.text = RSStr; } function dgCellClick(event){ /* - itemIndex Index of the selected item. - columnIndex Index of the selected column. - view Currently selected Object. - target Reference to the component that triggered the event. - type Name of the event. */ ta.text = event.itemIndex; }]]></mx:Script></mx:Application>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。