Flex 实践——在 Datagrid中及时显示Array的数据变化

       刚才花了两个小时研究了一下如何在Datagrid 显示Array 的数据时能动态反应Array 数据的变化。在这里,把研究的结果和大家一起分享。。。。       

Test. mxml 

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"   backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#F3CBCB, #E9EE9A]" fontSize="15">          <mx:states>                 <mx:State name="result">                         <mx:RemoveChild target="{canvas1}"/>                         <mx:AddChild position="lastChild">                                 <mx:DataGrid x="290" y="52" width="570" height="260" id="dg" dataProvider="{pArray}">                                         <mx:columns>                                                 <mx:DataGridColumn headerText="Pizza名称" dataField="name"/>                                                 <mx:DataGridColumn headerText="尺寸" dataField="size"/>                                                 <mx:DataGridColumn headerText="单价" dataField="price"/>                                         </mx:columns>                                 </mx:DataGrid>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Button x="539" y="402" label="继续购买" click="currentState=&quot;&quot;"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="261" y="337" text="Pizza名称:"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="358" y="337" text="{dg.selectedItem.name}" width="127" id="itemName"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="487" y="337" text="尺寸:"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="545" y="337" text="{dg.selectedItem.size}" width="96" id="itemSize"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="659" y="337" text="单价:"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Label x="717" y="337" text="{dg.selectedItem.price}" width="107" id="itemPrice"/>                         </mx:AddChild>                          <mx:AddChild position="lastChild">                                 <mx:Button x="832" y="335" label="删除" click="collectInfo1()"/>                         </mx:AddChild>                 </mx:State>                 <mx:State name="deleteSuccess">                         <mx:RemoveChild target="{canvas1}"/>                         <mx:AddChild position="lastChild">                                  <mx:Label x="461" y="187" text="该项删除成功!"/>                         </mx:AddChild>                         <mx:AddChild position="lastChild">                                 <mx:Button x="480" y="246" label="返回" click="currentState=&quot;result&quot;"/>                         </mx:AddChild>                 </mx:State>         </mx:states>         <mx:Script source="myScript.as"/>         <mx:Script>                 <![CDATA[                     import Class.*;                     private function collectInfo(pname:String,psize:String,pPrice:String):void{                      var pizza:Pizza=new Pizza();                      pizza.setName(pname);                      pizza.setSize(int(psize));                      pizza.setPrice(Number(pPrice));                       addPizza(pizza);                     }                       private function collectInfo1():void{                       var pizza:Pizza=new Pizza();                       pizza.setName(itemName.text);                       pizza.setSize(int(itemSize.text));                       pizza.setPrice(Number(itemPrice.text));                      deletePizza(pizza);                     }                 ]]>         </mx:Script>         <mx:Canvas x="188.5" y="97" width="670" height="404" id="canvas1">                 <mx:Image x="23" y="10" source="../image/pizza1.jpg" width="242" height="208"/>                 <mx:Label x="117" y="281" text="意大得披萨" fontSize="15" id="pname"/>                 <mx:Label x="23" y="318" text="单价:"/>                  <mx:Label x="81" y="318" text="30" id="pPrice"/>                 <mx:Label x="114" y="318" text="元/块"/>                 <mx:Label x="457" y="318" text="元/块"/>                 <mx:Label x="182" y="318" text="尺寸:"/>                 <mx:Label x="515" y="318" text="尺寸:"/>                 <mx:Label x="273" y="318" text="寸"/>                 <mx:Label x="607" y="318" text="寸"/>                 <mx:Label x="240" y="318" text="13" id="psize"/>                 <mx:Button x="139" y="350" label="购买" click="collectInfo(pname.text,psize.text,pPrice.text)"/>                 <mx:Button x="441" y="350" label="购买" click="collectInfo(pname2.text,psize2.text,pPrice2.text)"/>                 <mx:Image x="334" y="10" source="../image/Moric.jpg" width="231" height="253"/>                 <mx:Label x="411" y="281" text="墨西哥披萨" id="pname2"/>                 <mx:Label x="366" y="318" text="单价:"/>                 <mx:Label x="424" y="318" text="40" id="psize2"/>                 <mx:Label x="561" y="318" text="12" id="pPrice2"/>         </mx:Canvas>

        </mx:Application>

      myScript.as

import Class.*; import mx.controls.Alert; public var pArray:Array=new Array(); public function addPizza(pizza:Pizza):void{   var obj:Object=new Object();   obj.name=pizza.getName();   obj.size=pizza.getSize();  obj.price=pizza.getPrice();   pArray.push(obj);   currentState="result"; } public function deletePizza(pizza:Pizza):void{   var sign:String="1";  for(var i:Number=0;i<pArray.length;i++){          if(pArray[i].name==pizza.getName()){     sign="0";    pArray.splice(i,1);    break;    }   }  if(sign=="0"){   currentState="deleteSuccess";  }else if(sign=="1"){    Alert.show("您没有订购"+pizza.getName());  }   }

Pizza.as(放在了Class包下)

package Class {   public class Pizza  {   private var name:String;   private var size:int;   private var price:Number;   public function Pizza()   {   }          public function setName(name:String):void{          this.name=name;          }         public function setSize(size:int):void{          this.size=size;         }          public function setPrice(price:Number):void{          this.price=price;          }         public function getName():String{          return name;         }         public function getSize():int{           return size;         }         public function getPrice():Number{          return price;         }   } }

运行结果:  

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值