- 浏览: 4332 次
- 性别:
- 来自: 北京
文章分类
最新评论
Flex与FluorineFx传值
最近学习了一下Flex + FluorineFx,其中遇到了一个问题,就是FluorineFx与Flex之间怎样传值,为了这个问题在网上找了不少资料,然后有自己试了一下,下面把我的成果分享一下。
(1)传类对象,我这里没成功,不知为啥,但是网上有很多成功示例。
(2)传DataSet ,网上说加上这句话 [DataTableType( "ServiceLibrary.Book")]就行,但是我试过之后
不可以,也有说加上[DataSetType("ServiceLibrary.Book")]的,但是我试过之后在.Net端就没数据了,更别提
Flex端了。
(3)传DataTable,成功了,关键是加上 [DataTableType( "ServiceLibrary.Book")]。
(4)传XmlDocument,成功了。
(5)传String,成功了,其实String保存的也是XML形式,跟XmlDocument差不多。
(6)传 List<>,成功了,网上也有很多人都用这种方式。
FluorineFx端的Service
namespace ServiceLibrary { /// <summary> /// Fluorine sample service. /// </summary> [RemotingService("Fluorine sample service")] public class Sample { public Sample() { } public string Echo(string text) { return "Gateway echo: " + text; } /// <summary> /// 还有问题 /// </summary> /// <returns></returns> public Book GetBook() { return new Book { ID = 2, Name = "让子弹飞一会", Author = "姜文", Price = 32 }; } /// <summary> /// 还有问题,不能传值 /// </summary> /// <returns></returns> [DataTableType("Books", "ServiceLibrary.Book")] public DataSet GetDataSet() { DataSet ds = new DataSet("DS"); DataTable dt = ds.Tables.Add("Books"); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("Price", typeof(double)); DataRow dr = dt.NewRow(); dr["ID"] = 1; dr["Name"] = "《Flex游戏开发》"; dr["Author"] = "张三"; dr["Price"] = 54.85; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2; dr["Name"] = "《Flash游戏开发》"; dr["Author"] = "李四"; dr["Price"] = 65.50; dt.Rows.Add(dr); return ds; } public XmlDocument GetXML() { DataSet ds = new DataSet("DS"); DataTable dt = ds.Tables.Add("Books"); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("Price", typeof(double)); DataRow dr = dt.NewRow(); dr["ID"] = 1; dr["Name"] = "《Flex游戏开发》"; dr["Author"] = "张三"; dr["Price"] = 54.85; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2; dr["Name"] = "《Flash游戏开发》"; dr["Author"] = "李四"; dr["Price"] = 65.50; dt.Rows.Add(dr); String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \n"; xmlStr += ds.GetXml(); XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlStr); return xml; } public String GetStringXML() { DataSet ds = new DataSet("DS"); DataTable dt = ds.Tables.Add("Books"); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("Price", typeof(double)); DataRow dr = dt.NewRow(); dr["ID"] = 1; dr["Name"] = "《Flex游戏开发》"; dr["Author"] = "张三"; dr["Price"] = 54.85; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2; dr["Name"] = "《Flash游戏开发》"; dr["Author"] = "李四"; dr["Price"] = 65.50; dt.Rows.Add(dr); String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \n"; xmlStr += ds.GetXml(); return xmlStr; } [DataTableType("ServiceLibrary.Book")] public DataTable GetDataTable() { DataTable dt = new DataTable("Books"); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("Price", typeof(double)); DataRow dr = dt.NewRow(); dr["ID"] = 1; dr["Name"] = "《Flex游戏开发》"; dr["Author"] = "张三"; dr["Price"] = 54.85; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2; dr["Name"] = "《Flash游戏开发》"; dr["Author"] = "李四"; dr["Price"] = 65.50; dt.Rows.Add(dr); return dt; } public List<Book> GetList() { List<Book> list = new List<Book>(); Book book = new Book(); book.ID = 1; book.Name = "《Flex游戏开发》"; book.Author = "张三"; book.Price = 50; list.Add(book); book = new Book(); book.ID = 1; book.Name = "《Flash游戏开发》"; book.Author = "李四"; book.Price = 60; list.Add(book); return list; } } public class Book { public Book() { } public int ID { get; set; } public string Name { get; set; } public string Author { get; set; } public double Price { get; set; } }
Flex调用代码
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.xml.SimpleXMLDecoder; import mx.utils.ObjectUtil; import mx.utils.ArrayUtil; [Bindable] private var book:BookVO; [Bindable] private var books:ArrayCollection = null; private function resultEcho(event:ResultEvent):void { // 测试成功!已经获得数据。 trace("event.result:" + event.result); Alert.show(event.result as String, "Result"); } private function faultOperation(event:FaultEvent):void { // 如果测试失败!显示无法获得数据。 trace("event.message:" + event.message); Alert.show("无法获得数据!", "错误"); } // 没实现,返回的对象为空 private function onGetBook(event:ResultEvent):void { book = event.result as BookVO; Alert.show(event.result.ID as String, "Result"); } // 成功 关键是加上 [DataTableType("Flex.CustomerVO")] // 要在 WebService加上 [DataTableType("Flex.CustomerVO")] private function onGetDataTable(event:ResultEvent):void { //---------WebService解析方法--------- //books = event.result.Tables.Books.Rows as ArrayCollection; //bookGrid.dataProvider=this.service.GetDataTable.lastResult.Tables.Books.Rows; //---------WebService解析方法--------- books = event.result as ArrayCollection; bookGrid.dataProvider= books; } // 没实现,返回的对象为空 // 在 WebService加上 [DataTableType("Flex.CustomerVO")] 在webservice成功,在这不好使 // 在 WebService加上 [DataSetType("Flex.CustomerVO")] 在webservice 和 在 这都不好使 private function onGetDataSet(event:ResultEvent):void { //---------WebService解析方法--------- //books = this.service.GetDataSet.lastResult.diffgram.DS.Books as ArrayCollection; //books = event.result.Books.serverInfo.initialData as ArrayCollection; //---------WebService解析方法--------- books = event.result as ArrayCollection; bookGrid.dataProvider= books; } // 成功!!!!!!!!!!!!!! private function onGetList(event:ResultEvent):void { books = service.GetList.lastResult as ArrayCollection; bookGrid.dataProvider= books; } // 成功!!!!!!!!!!!!!! // Webservice端是 XmlDocument 这种格式 private function onGetXML(event:ResultEvent):void { var xmltree:XML = new XML(); xmltree = event.result as XML; books = new ArrayCollection(); books.removeAll(); for each(var xml:XML in xmltree.children()) { books.addItem(xml); } bookGrid.dataProvider= books; //把数据源绑定到列表中 } // 希望XMLDocument 转化成 ArrayCollection // 没试呢 private function convertXmlToArrayCollection( file:String ):ArrayCollection { var xml:XMLDocument = new XMLDocument( file ); var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(); var data:Object = decoder.decodeXML( xml ); var array:Array = ArrayUtil.toArray(data.list.items); return new ArrayCollection(array); } // 成功!!!!!!!!!!!!!! // Webservice端是 String 这种格式,但是String存的是 XML private function onGetStringXML(event:ResultEvent):void { /* books如果为空的话就会出现不能对空对象进行操作,所以每次使用先 New 一下*/ var xmltree:XML = new XML(event.result.toString()); books = new ArrayCollection(); books.removeAll(); for each(var xml:XML in xmltree.children()) { books.addItem(xml); } bookGrid.dataProvider= books; //把数据源绑定到列表中 } ]]> </mx:Script> <!--destination必须和WebService中的服务名一样--> <!--source是服务所在的class--> <mx:RemoteObject id="service" destination="fluorine" source="ServiceLibrary.Sample" fault="faultOperation(event)" > <mx:method name="Echo" result="resultEcho(event)"/> <mx:method name="GetBook" result="onGetBook(event)"/> <mx:method name="GetDataSet" result="onGetDataSet(event)"/> <mx:method name="GetDataTable" result="onGetDataTable(event)"/> <mx:method name="GetList" result="onGetList(event)"/> <mx:method name="GetXML" result="onGetXML(event)"/> <mx:method name="GetStringXML" result="onGetStringXML(event)"/> </mx:RemoteObject> <mx:VBox paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" height="162" width="915" > <mx:HBox> <mx:TextInput id="txt" /> <mx:Button label="Echo" click="service.Echo(txt.text)" /> </mx:HBox> <mx:ControlBar height="116" width="867"> <mx:Button label="DataTable" click="service.GetDataTable()"/> <mx:Button label="Book" click="service.GetBook()"/> <mx:Button label="List" click="service.GetList()"/> <mx:Button label="XML" click="service.GetXML()"/> <mx:Button label="StringXML" click="service.GetStringXML()"/> <mx:Button label="DataSet" click="service.GetDataSet()"/> <mx:TextInput width="302" text="{book.Name+book.Author+book.Price}"/> </mx:ControlBar> </mx:VBox> <mx:DataGrid x="10" y="170" width="543" height="147" id="bookGrid" > <mx:columns> <mx:DataGridColumn headerText="编号" dataField="ID"/> <mx:DataGridColumn headerText="书名" dataField="Name"/> <mx:DataGridColumn headerText="作者" dataField="Author"/> <mx:DataGridColumn headerText="价格" dataField="Price"/> </mx:columns> </mx:DataGrid> </mx:Application>
相关推荐
Json.NET 描述: json。 网络是一个流行的高性能JSON为。NET框架 灵活的JSON序列化器对之间的转换。净对象和JSON linq到JSON用于手动阅读和写作JSON 高性能,速度比。净的内置JSON序列化器 写缩进,容易阅读JSON JSON和...
.NET Reactor是一款功能强大的代码保护以及许可授权管理系统软件,主要用于开发人员保护其.NET软件程序,.NET Reactor支持所有支持.NET编译的程序开发语言。 .NET Reactor 4.9是目前最新版本,由大神yoza破解,亲测...
如果.NET卸载不完全会导致以后的版本无法安装等问题,.NET Framework Cleanup Tool是一个专用于卸载、清除掉计算机中不同版本.NET框架的免费小软件。支持所有语言的.NET 它能删除与.NET相关的文件,并且还能自动将...
标题提及的“Newtonsoft.Json.Net的各个版本适用.net2.0 .net3.5 .net4.0 .net4.5”,意味着这个库的各个发行版本能够与不同的.NET Framework版本兼容。让我们逐一解析这些版本: 1. **.NET 2.0**:这是.NET ...
ASP.NET 是微软公司开发的一种用于构建 Web 应用程序的框架,它允许开发者使用.NET Framework 或.NET Core 进行服务器端编程。在这个“asp.net 后台管理系统界面”中,我们主要关注的是如何利用 ASP.NET 来设计和...
.NET Framework是微软开发的一个软件框架,它为开发者提供了一个用于构建、部署和运行应用程序的平台。Microsoft .NET Framework Repair Tool是微软官方推出的一款专门用于解决.NET Framework安装或运行时遇到问题的...
.NET Framework 4.0是微软开发的一个重要组件,它为开发者提供了一个运行各种应用程序所需的环境。这个离线安装包使得用户在没有网络连接的情况下也能安装.NET Framework 4.0,对于那些网络不稳定或者速度较慢的环境...
本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...
**规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...
《.NET项目实例详解》 在.NET框架下,开发者可以构建各种类型的应用程序,包括桌面应用、Web应用、移动应用以及服务端应用等。本文将深入探讨多个.NET项目实例,旨在为初学者提供宝贵的参考资料,帮助他们更好地...
这是第六版的介绍《ASP.NET 4入门经典:涵盖C#和VB.NET(第6版)》内容简介:ASP.NET是.NET Framework的一部分,用于构建内容丰富的动态Web站点。其最新的版本ASP.NET 4对上一版进行了许多改进,包括增强了Web窗体,并...
ASP.NET Core 3.1 中文教程 ASP.NET Core 是 Microsoft 开发的一款免费、开源的 Web 应用程序框架,适用于开发跨平台的 Web 应用程序。本文档提供了 ASP.NET Core 3.1 的中文使用手册,涵盖了ASP.NET Core 的各种...
用于VisualStudio2019以上版本开发.net framework 4.5.2框架的代码。适用于64位操作系统~ 从Visual Studio 2022开始,Microsoft不再包含.NET Framework 4.0到4.5.1的.NET Framework组件,因为这些版本不再受到...
SAP .Net Connector 3.0 是一个关键的软件组件,它允许.NET应用程序与SAP系统进行无缝集成和通信。这个连接器提供了丰富的接口和功能,使得开发人员能够利用C#、VB.NET或其他.NET语言来访问SAP的功能,执行业务逻辑...
标题 "C#用S7.net" 指的是在C#编程环境中利用S7.net库进行西门子PLC(SIMATIC S7系列)通信的知识点。S7.net是一个用于与西门子PLC进行数据交换的.NET组件,它允许开发者在C#等.NET支持的语言中实现对PLC的读写操作...
前言:8月份翻译了Quartz.NET的官方课程:开源的作业调度框架 - Quartz.NET, 有的朋友抱怨难用,确实,目前Qiartz.NET的最新版本还是0.6,还存在很多bug和不完善的地方。本文使用一系列代码示例介绍 Quartz.NET API...
.NET Framework是微软开发的一个软件框架,它为开发者提供了一个用于构建、部署和运行基于Windows的应用程序的平台。此框架自2002年发布以来,经历了多次版本更新,包括.NET Framework 1.0到.NET Framework 4.8等多...
使用 Free Spire.XLS for .NET,开发人员可以在 .NET(C#, VB.NET, ASP.NET, .NET Core) 应用程序中快速对 Excel 文档进行各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档以及对 Excel 文档进行...
《.NET 6.0官方中文文档》是全面深入学习.NET 6.0的权威指南,由微软技术专家精心编撰,总计4518页,涵盖了从环境配置到实战开发再到高级理论的全方位内容。本文将基于文档的部分内容,解析.NET 6.0的关键知识点。 ...
FastReport.NET是一款强大的报表设计和开发工具,专为.NET Framework和.NET Core应用程序设计。它提供了丰富的功能,使得开发者能够轻松创建、设计和打印各种复杂的报表,包括表格、图表、图像和文本等。在2022.3.9...