FluorineFx 학습 정리 (1)

10959 단어 배우다
서버측 관련 코드
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()
        {
            return new 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 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 측에서 Array Collection으로 전환할 수 있음;주의해야 할 것은 서버 측이 이 방법 앞에서 [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 선언이 필요합니다.
[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
List는 Flex단의 Array Collection으로 직접 받을 수 있습니다
 
private function onCodeResult(result:ArrayCollection):void
{
 this.dataGrid1.dataProvider = result;
}

좋은 웹페이지 즐겨찾기