flex+EF(Asp.Net Entity Framework)+FluorineFx 組合的自定義實體類型轉換(原創)



幾經周折搞定flex as自定義類到 .net c#的轉換。
 
以進銷存銷售開單爲例,這是一個典型的主明細表實體類,我是把主表類和明細表類做成一個類。然後在flex as3端傳送到.net端
我用的配置是flex as3 + EF(Asp.Net Entity Framework) c# + FluorineFx 組合
銷售開單我做了一個類,
FLEX端:
order_list.as
 
其中包括兩個成員
public var AccoutListVO:ArrayCollection; //銷售明細單用一數組
public  var ordersVO:TgetXskdOrder;//銷售主表
 
傳給amf用的是object
//傳遞Order主明細表
        public function addorder(ro:order_list):void{
           
            _service.addOrder.send(ro);
        }
以下是order_list.as源碼
package vo
{  
    import mx.collections.ArrayCollection;
    import mx.collections.IList;
//這行沒有用因爲到c#的格式[RemoteClass(alias="posService.vo.order_list")]       //試了幾種方式,發現都無法映射到cs類。最後決定自己綁定。
 




    [Bindable] 
    public class order_list
   
    { 
   
        public var AccoutListVO:ArrayCollection;//明細表
        public  var ordersVO:TgetXskdOrder;//主表
       
        public function order_list():void{
           
           
        }
      } 

//傳送方法
protected function addOrder_clickHandler(event:MouseEvent):void
  {
   var ro:order_list=new order_list();
   ro.ordersVO.S_E_NAME="tt";
   ro.ordersVO.S_O_DATE="2010-1-1";
   var ro1:TgetXskdOrder=new TgetXskdOrder();
   ro1=ro.ordersVO;
   var myArray:ArrayCollection=new ArrayCollection(); 
   myArray.addItem(new AccoutListVO()); 
   myArray.addItem(new AccoutListVO()); 
   myArray.addItem(new AccoutListVO()); 
   myArray.addItem(new AccoutListVO()); 
   
   ro.AccoutListVO=myArray ;
   
  
   dbControl.addorder(ro);
  }
 
C#端
//建一銷售單類  orderlist.cs
 
Orderlist.cs
public class orderlist
    {
      
        public Orders orders;//銷售單主表
        public IList<AccoutList> accoutList;//銷售單明細表
        public  orderlist(ASObject obj)
        {
          //  untypedList.OfType<T>().ToList();
 
        //轉換flex傳過來的Order主表。
            this.orders = obj["ordersVO"] as Orders;
        //轉換FluorineFx.AMF3.ArrayCollection   到Ilist<T>很麻煩,查了很多資料才找到,最後在msdn上才找到答案IList to IList<T> http://social.msdn.microsoft.com/Forums/zh-CN/netfxbcl/thread/8c22d5db-8bf3-4dda-9db1-dc0ca3bb9cb4
      
  this.accoutList = (obj["AccoutListVO"] as IList).OfType<AccoutList>().ToList();
  }
   
    }
 
服務調用的方法
public bool addOrder(ASObject obj)
        {
            orderlist obj1 = new orderlist(obj);
            return true;
        }
 
 
至此.net端成功轉換flex端傳過來的複雜自定義類。
下次更新.net到flex as3端的自定義實體類型轉換
網絡推廣 網站運營 網站開發 DDV的茶餐廳 http://www.dplayer.net/ ,   http://www.dplayer.net/post/94.html 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章