微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice传来的结果 并放入DataGrid中

<?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] 举报,一经查实,本站将立刻删除。

相关推荐