Flex各种数据的类型转换以及DataGrid的数据集合类型

例子:对于一个DataGrid控件的数据源


1、result.toString()=
<?xml version="1.0" encoding="UTF-8"?>
<adminManagers>

     <admin><name>merry</name><pwd>iam</pwd></admin>

       <admin><name>sdf</name><pwd>sfg</pwd></admin>

</adminManagers>


2、var xmlObj:XML=new XML(result.toString());
<adminManagers>

     <admin><name>merry</name><pwd>iam</pwd></admin>

       <admin><name>sdf</name><pwd>sfg</pwd></admin>

</adminManagers>


3、xmlObj.children()=
  <admin><name>merry</name><pwd>iam</pwd></admin>

       <admin><name>sdf</name><pwd>sfg</pwd></admin>


4、myDg.dataProvider=xmlObj.children();


5、<mx:DataGridColumn headerText="Admin Name"
                                   dataField="name"/>



**************************************************************************

第二种情况  也是对于一个DataGrid控件的数据源



1、result.toString=
<?xml version="1.0" encoding="UTF-8"?>
<rule>
  <sipAccount>sip:hill@ocp.gz.com</sipAccount>
  <extension>sip:8190@ext.protel.com.hk</extension>
  <action>
    <outgoing>
      <sipPhoneAddr code="1">sip:1@ext.protel.com.hk</sipPhoneAddr>
      <sipPhoneAddr code="11">sip:11@ext.protel.com.hk</sipPhoneAddr>
    </outgoing>
  </action>
</rule>

2、xml:XMLList=XMLList(event.result as String);
<rule>
  <sipAccount>sip:hill@ocp.gz.com</sipAccount>
  <extension>sip:8190@ext.protel.com.hk</extension>
  <action>
    <outgoing>
      <sipPhoneAddr code="1">sip:1@ext.protel.com.hk</sipPhoneAddr>
      <sipPhoneAddr code="11">sip:11@ext.protel.com.hk</sipPhoneAddr>
    </outgoing>
  </action>
</rule>

3、xml1:XMLList=xml[0].action[0].outgoing[0].sipPhoneAddr;
<sipPhoneAddr code="1">sip:1@ext.protel.com.hk</sipPhoneAddr>
<sipPhoneAddr code="11">sip:11@ext.protel.com.hk</sipPhoneAddr>

4、xml.extension[0]=
sip:8190@ext.protel.com.hk

5、for (var i:int=0; i < xml1.length(); i++)
{
   var obj:Object=new Object();
   var arr:ArrayCollection=new ArrayCollection();
   obj.sipPhoneAddr=xml1[i];   //值为xml节点的值sip:1@ext.protel.com.hk、sip:11@ext.protel.com.hk
   obj.code=xml1[i].@code;      //值为xml属性的值1、11
   arr.addItem(obj);     //addItem添加的对象是object类型
}
  
注:创建Object的方法很简单, 你可以使用new操作符定义一个Object,如下所示:

var obj:Object = new Object();
obj.name = “flex”;
obj.version = “2”;
这里,我们生成了一个新Object对象obj,它有两个属性name和version。当然,我们也可以通过赋初值的方式直接定义Object对象:
var obj:Object = {name: ”flex”, version: “2”}
 
注:Array中可以存放多种数据类型 ,包括数字、字符串、对象或者是其他Array。请记住,Array对象的拷贝方式是引用拷贝而非值拷贝。因此当你将一个Array变量赋给另一个Array变量时,这两个变量将指向同一个Array。

var array1:Array = new Array();

var array2:Array = new Array(“a”, “b”, “c”);

var array3:Array = [“a”, “b”, “c”];


可以插入各种对象类型数据,但不能插入数组。用push方法 

var items:Array = new Array();  
    items.push({label: "Flex" ,data:1});  
    items.push({label: "Ext" ,data:2});  
    items.push({label: "JBPM" ,data:3});

 


你可以使用for循环遍历一个数组:

for(var i:int = 0; i < array3.length; i++) {}

注:ArrayCollection如何在程序中使用
  private var coll:ArrayCollection
arr:ArrayCollection = new ArrayCollection( 
                                                          [

                                                            {code:1, sipPhoneAddr:"bbb "}, 
                                                            {code:11, sipPhoneAddr:"aaa "} 

                                                          ]

                                                        ); 


1、要插入元素,可使用addItemAt和addItem: 
arr.addItemAt ({code:22, sipPhoneAddr:"ssss"}, 0);
arr.addItem ({code:33, sipPhoneAddr:"aaa"});


2、要取得它里面的值用arr.getItemAt (i).code


3、ArrayCollection和Object类型的转换

var obj:Object = new Object();


obj.name = “flex”;
obj.version = “2”;

var obj:Object = {name: ”flex”, version: “2”}

var arr:ArrayCollection=new ArrayCollection();

arr.addItem(obj);    //可见Array和ArrayCollection都可以添加Object类型数据


4、它经常用来批量添加Objec类型的数据,如以下一个批量删除选中数据例子

var mySelectedItem:Array=myDg.selectedItems;
 var myRemoveData=new ArrayCollection();   
          for each (var item:Object in mySelectedItem)     ///注意这里又是Array和Object的转换
         {
                    myRemoveData.addItem(item);
         }

          for (var i:int=0; i < myRemoveData.length; i++)
                {
 
                    getAdminInfoWs.deleteAdminByAdminName(mySelectedItem[i].name) //根据name属性来删除
                    u=i+1;
                }



6、    <mx:DataGrid id="myDg" dataProvider="{arr}">
        <mx:columns>
            <mx:DataGridColumn headerText="CODE" dataField="code"/>
            <mx:DataGridColumn headerText="Address" dataField="sipPhoneAddr"/>
        </mx:columns>
    </mx:DataGrid>


*******************************************************************************

DataGrid所可使用的数据源

1、private var _record:XML=<list>
                    <user name="小明" result="60"></user>
                    <user name="小红" result="59"></user>
                    <user name="小白" result="75"></user>
                    <user name="小黑" result="38"></user>
                    <user name="小青" result="80"></user>
                    <user name="小文" result="100"></user>
                    <user name="小鬼" result="99"></user>
                    <user name="小东" result="40"></user>
                </list>


2、<ns1:MyDataGrid dataProvider="{_record.user}"
                      right="5"
                      left="5"
                      top="5"
                      bottom="5">
        <ns1:columns>
            <mx:DataGridColumn headerText="姓名"
                               dataField="@name"/>
            <mx:DataGridColumn headerText="成绩"
                               dataField="@result"/>
        </ns1:columns>
    </ns1:MyDataGrid>


*****************************************************************************

1、现有private var xml:XML

 如果要取得 “黄金葫芦 ”

则可以:xml.children().(@id==“2”)[0].name

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值