利用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
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
出處:http://yjmyzz.cnblogs.com
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
posted on 2010-11-17 16:18 aiaiwoo 閱讀(568) 評論(0) 編輯 收藏 所屬分類: AC3/FLEX