zoukankan      html  css  js  c++  java
  • FluorineFx学习整理(一)

    服务器端相关代码

    Game.cs(实体类)

    namespace ServiceLibrary1
    {
        [TransferObject]
        
    public class
     Game
        {
            
    public
    int ID { get; set; }
            
    public
    string Name { get; set; }
            
    public
    string Country { get; set; }
        }
    }

    GameTask.cs(操作类)

    namespace ServiceLibrary1
    {
        [RemotingService]
        
    public class
     GameTask
        {
            
    public
    Game GetGame()
            {
                
    returnnew
    Game { ID = 1, Name = 
    "魔兽世界"
    , Country = 
    "美国"
     };
            }
            [DataTableType(
    "ServiceLibrary1.Game"
    )]
            
    public
    DataTable GetDataTable()
            {
                DataTable dt = 
    new
    DataTable();
                dt.Columns.Add(
    "ID"
    , 
    typeof
    (int));
                dt.Columns.Add(
    "Name"
    , 
    typeof
    (string));
                dt.Columns.Add(
    "Country"
    , 
    typeof
    (string));
                DataRow dr = dt.NewRow();
                dr[
    "ID"
    ] = 1;
                dr[
    "Name"
    ] = 
    "《大话西游》"
    ;
                dr[
    "Country"
    ] = 
    "中国"
    ;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr[
    "ID"
    ] = 2;
                dr[
    "Name"
    ] = 
    "《永恒之塔》"
    ;
                dr[
    "Country"
    ] = 
    "韩国"
    ;
                dt.Rows.Add(dr);
                
    return
     dt;
            }
    
            [DataSetType(
    "ServiceLibrary1.DSClass"
    )]
            [DataTableType(
    "group1"
    , 
    "myTable1"
    , 
    "ServiceLibrary1.Game"
    )]
            [DataTableType(
    "group2"
    , 
    "myTable2"
    , 
    "ServiceLibrary1.Game"
    )]
            
    public
    DataSet GetDataSet()
            {
                DataSet ds = 
    new
    DataSet();
                DataTable dt = ds.Tables.Add(
    "group1"
    );
                dt.Columns.Add(
    "ID"
    , 
    typeof
    (int));
                dt.Columns.Add(
    "Name"
    , 
    typeof
    (string));
                dt.Columns.Add(
    "Country"
    , 
    typeof
    (string));
                DataRow dr = dt.NewRow();
                dr[
    "ID"
    ] = 3;
                dr[
    "Name"
    ] = 
    "《魔力宝贝》"
    ;
                dr[
    "Country"
    ] = 
    "日本"
    ;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr[
    "ID"
    ] = 4;
                dr[
    "Name"
    ] = 
    "《剑侠情缘三》"
    ;
                dr[
    "Country"
    ] = 
    "中国"
    ;
                dt.Rows.Add(dr);
               
    //table2
                dt = ds.Tables.Add(
    "group2"
    );
                dt.Columns.Add(
    "ID"
    , 
    typeof
    (int));
                dt.Columns.Add(
    "Name"
    , 
    typeof
    (string));
                dt.Columns.Add(
    "Country"
    , 
    typeof
    (string));
                dr = dt.NewRow();
                dr[
    "ID"
    ] = 5;
                dr[
    "Name"
    ] = 
    "《传奇》"
    ;
                dr[
    "Country"
    ] = 
    "韩国"
    ;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr[
    "ID"
    ] = 6;
                dr[
    "Name"
    ] = 
    "《魔戒》"
    ;
                dr[
    "Country"
    ] = 
    "美国"
    ;
                dt.Rows.Add(dr);
                
    return
     ds;
            }
        }
    }

    1. <mx:RemoteObject>控件访问

    <mx:RemoteObject id=
    "ro1"
     destination=
    "fluorine"
     source=
    "ServiceLibrary1.GameTask"
     fault=
    "onFault(event)"
    >
     <mx:method name=
    "GetGame"
     result=
    "onResult(event)"
    ></mx:method>
     <mx:method name=
    "GetDataTable"
     result=
    "onDataTableResult(event)"
    ></mx:method>
     <mx:method name=
    "GetDataSet"
     result=
    "onDataSetResult(event)"
    ></mx:method>
    </mx:RemoteObject>

    2. 代码直接访问

    private function
     onCodeClick(event:MouseEvent):
    void
    {
     
    var
    nc:NetConnection = 
    new
    NetConnection();
     
     
    var
    responder:Responder = 
    new
    Responder(onCodeResult,onCodeStatus);
     
     nc.objectEncoding = ObjectEncoding.AMF3;
     
     nc.connect(
    "http://localhost:4608/Web/gateway.aspx"
    );
     
     nc.call(
    "ServiceLibrary1.GameTask.GetDataSet"
    ,responder);
    }
    
    private function
     onCodeResult(result:Object):
    void
    {
     
    this
    .dataGrid1.dataProvider = result.myTable2  
    as
      ArrayCollection;
    }
    
    private function
     onCodeStatus(event:Object):
    void
    {
     
    trace
    (
    "Error"
    );
    }

    3. 接收返回的对象

    可以创建一个与服务器端对象一样结构的AS3对象来接收返回值,或直接用Object来接收

    private function
     onResult(event:ResultEvent):
    void
    {
     
    var
    obj:Object = event.result  
    as
      Object;
     
    this
    .lblResult.text = obj.Name;
    }

    4. 接收返回的DataTable

    服务器端的DataTable,在Flex端可以转换为ArrayCollection;需要注意的是,服务器端要在该方法前声明[DataTableType(remoteClass:String)]

    private function
     onClick(event:MouseEvent):
    void
    {
     ro1.GetDataTable();
    }
    
    private function
     onDataTableResult(event:ResultEvent):
    void
    {
     
    this
    .dataGrid1.dataProvider = event.result  
    as
      ArrayCollection;
    }

    5. 接收返回的DataSet

    DataSet包含有多个DataTable,在服务器端返回DataSet方法时,需要加入一个DataSetType和若干个DataTableType声明,例如:

    [DataSetType(
    "ServiceLibrary1.DSClass"
    )]
    [DataTableType(
    "group1"
    , 
    "myTable1"
    , 
    "ServiceLibrary1.Game"
    )]
    [DataTableType(
    "group2"
    , 
    "myTable2"
    , 
    "ServiceLibrary1.Game"
    )]
    
    public
    DataSet GetDataSet()
    {
            DataSet ds = 
    new
    DataSet();
            DataTable dt1 = ds.Tables.Add(
    "group1"
    );
    
    //……
            DataTable dt2 = ds.Tables.Add(
    "group2"
    );
    
    //……
    }

    这里的DataSetType所定义的DSClass,好像并不需要有这样一个实体类对应,随便写个都没什么问题;DataTableType的参数是DataTableType(表名,引用时的属性名,相应的类名)

    private function
     onClick(event:MouseEvent):
    void
    {
     ro1.GetDataSet();
    }
    
    private function
     onDataSetResult(event:ResultEvent):
    void
    {
     
    this
    .dataGrid1.dataProvider = event.result.myTable2  
    as
      ArrayCollection;
    }

    6. 接收返回的对象数组(Object[])

    对象数组可以直接用Flex端的Array来接收

    private function
     onCodeResult(result:Array):
    void
    {
     
    this
    .dataGrid1.dataProvider = result;
    }

    7. 接收返回的List<OBJECT>

    List<OBJECT> 可以直接用Flex端的ArrayCollection来接收

    private function
     onCodeResult(result:ArrayCollection):
    void
    {
     
    this
    .dataGrid1.dataProvider = result;
    }
  • 相关阅读:
    hadoop12---java并发编程的一些总结
    hadoop11----socket
    springboot-vue项目后台2---pojo对查询结果手动分组
    hadoop10---消息队列
    hadoop09----线程池
    hadoop08---读写锁
    hadoop07---synchronized,lock
    hadoop06---多线程
    Java Applet与Java Application的区别
    HTML中id、name、class 区别
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1777897.html
Copyright © 2011-2022 走看看