利用fluorineFx將DataTable從.Net傳遞到Flash

          FluorineFx自帶的示例都不錯,就是有點不簡潔,下面的代碼基本上已經最簡版了(環境vs2010)
          1、先創建一個Web Application,然后添加FluorineFx以及FluorineFx.ServiceBrowser的引用

          這二個程序集的默認位置在:

          C:"Program Files (x86)"FluorineFx"Bin"net"3.5"FluorineFx.dll
          C:"Program Files (x86)"FluorineFx"Bin"net"3.5"FluorineFx.ServiceBrowser.dll

          2、然后添加一個DataService.cs類,寫好.net的服務端代碼

          using System.Data;
          using FluorineFx;
          namespace DataTableDemo
          {
          [RemotingService]
          public class DataService
          {
          [DataTableType("隨便填寫什么")]
          public object GetCountries(string capital)
          {
          DataTable tbl = new DataTable();
          tbl.Columns.Add("ID", typeof(System.Int32));
          tbl.Columns.Add("Country", typeof(System.String));
          tbl.Columns.Add("Capital", typeof(System.String));
          tbl.Rows.Add(1, "Andorra", "Andorra");
          tbl.Rows.Add(2, "United Arab", "Abu Dhabi");
          tbl.Rows.Add(3, "BeiJing", "China");
          if (capital.Length > 0)
          {
          DataTable tbl2 = tbl.Clone();
          DataRow[] drs =  tbl.Select("Capital like '%" + capital + "%'");
          foreach (var item in drs)
          {
          tbl2.Rows.Add(item[0], item[1], item[2]);
          }
          return tbl2;
          }
          return tbl;
          }
          }
          }
          

          這段代碼很簡單,就是返回一個DataTable而已

          3、添加一些配置文件

            3.1、修改web.config

          <?xml version="1.0" encoding="utf-8"?>
          <configuration>
          <configSections>
          <!--添加fluorinefx配置節信息-->
          <sectionGroup name="fluorinefx">
          <section name="settings" type="FluorineFx.Configuration.XmlConfigurator, FluorineFx" requirePermission="false"/>
          </sectionGroup>
          </configSections>
          <fluorinefx>
          <settings>
          </settings>
          </fluorinefx>
          <system.web>
          <httpModules>
          <!--添加FluorineGateway的httpMudules-->
          <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx"/>
          </httpModules>
          <compilation debug="true" targetFramework="4.0" />
          </system.web>
          </configuration>
          

            3.2、創建WEB-INF/flex目錄,并創建二個文件remoting-config.xml,services-config.xml

          remoting-config.xml內容

          <?xml version="1.0" encoding="UTF-8"?>
          <service id="remoting-service"
          class="flex.messaging.services.RemotingService"
          messageTypes="flex.messaging.messages.RemotingMessage">
          <!-- DO NOT CHANGE <adapters> SECTION-->
          <adapters>
          <adapter-definition id="dotnet" class="FluorineFx.Remoting.RemotingAdapter" default="true"/>
          </adapters>
          <default-channels>
          <channel ref="my-amf"/>
          </default-channels>
          <destination id="fluorine">
          <properties>
          <source>*</source>
          </properties>
          </destination>
          </service>
          

          services-config.xml內容

          <?xml version="1.0" encoding="utf-8" ?>
          <services-config>
          <services>
          <service-include file-path="remoting-config.xml" />
          </services>
          <channels>
          <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
          <endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
          <properties>
          <legacy-collection>true</legacy-collection>
          </properties>
          </channel-definition>
          </channels>
          </services-config>
          

          目錄結構如下:

          4、寫Flash調用端

          import org.bytearray.remoting.Service;
          import org.bytearray.remoting.PendingCall;
          import org.bytearray.remoting.events.ResultEvent;
          import org.bytearray.remoting.events.FaultEvent;
          var gatewayUrl:String="http://localhost:7796/Gateway.aspx";
          if (root.loaderInfo.parameters.remotingGatewayPath!=null) {
          gatewayUrl=root.loaderInfo.parameters.remotingGatewayPath+"/Gateway.aspx";
          }
          var service:Service=new Service("DataTableDemo.DataService",gatewayUrl,ObjectEncoding.AMF3);
          var rpc:PendingCall=service.GetCountries("B");
          rpc.addEventListener( ResultEvent.RESULT, success );
          rpc.addEventListener( FaultEvent.FAULT, error );
          function success( pEvt:ResultEvent ):void {
          txtResult.text="當前網關路徑:" + gatewayUrl + ""n調用成功,以下是返回的數據:"n";
          var len:int=pEvt.result.length;
          var i:int=0;
          for (i=0; i<len; i++) {
          txtResult.appendText("ID:"+pEvt.result[i].ID+",Country:"+pEvt.result[i].Country+",Capital:"+pEvt.result[i].Capital+""n");
          }
          }
          function error( pEvt:FaultEvent ):void {
          txtResult.text="當前網關路徑:" + gatewayUrl + ""n調用失敗,以下是詳細信息:"n";
          txtResult.appendText( pEvt.fault.description );
          }
          

          運行截圖:

          示例源文件下載: http://cid-2959920b8267aaca.office.live.com/self.aspx/Flash/01.DataTable.rar

          作者:菩提樹下的楊過
          出處:http://yjmyzz.cnblogs.com 
          本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

          posted on 2010-11-17 16:18 aiaiwoo 閱讀(568) 評論(0)  編輯  收藏 所屬分類: AC3/FLEX

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新宁县| 临西县| 云浮市| 南涧| 博爱县| 新巴尔虎右旗| 朝阳市| 沂源县| 凤台县| 都昌县| 内江市| 陆丰市| 普格县| 鄂州市| 肥东县| 宁河县| 邢台县| 汶川县| 商丘市| 安平县| 水富县| 牡丹江市| 汽车| 兰考县| 金坛市| 呈贡县| 珲春市| 运城市| 隆昌县| 阿勒泰市| 桃江县| 乃东县| 台南县| 封丘县| 乐昌市| 海南省| 合江县| 南充市| 商城县| 石狮市| 桦南县|