资源描述:
《高级篇(5):extjs30xdirect详解-5》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、北风网项目培训高级篇(1):ExtJS3.0xDirect详解讲师:风舞烟ExtJs版国讯教育通用智能OA办公平台目录Ext.Direct简介Ext.Direct结合Asp.net使用准备工作ExtDirect的原理一个简单的Direct无参调用DemoDirect带参调用Direct日期时间格式参数调用利用JSON.net输出JSON格式的字符串利用Direct异步加载树利用Direct上传文件Direct高级用法利用Direct从服务器加载与提交表单数据如何暴露多个服务端接口及注意事项批量提交数据与响应数据为Grid设置DirectStoreExt.data.Api简
2、介Ext.data.Writer简介Direct注意事项小结Ext.Direct简介类Ext.Direct包:Ext定义的文件:Direct.js类全称:Ext.Direct继承自于:Ext.util.Observable概述OverviewExt.Direct的目的在于提供一个无缝的通讯流(streamline)介乎于客户端和服务端之间,形成一种单一的接口,从而使得我们减少一些乏味的编码,例如数据的验证和出来返回的数据包(读数据、错误条件等等)。说明:ExtDirect是一套Ext3.0后出现的数据交换API,它的作用是屏蔽服务器后端平台的差异,使用同一套API实现前台
3、应用与后台服务之间的数据交互。对Java用户来说,ExtDirect似乎就是另外一个DWR,实际上两者的工作原理也是基本相同,都是根据后台对应的功能方法生成前台中对应的javascript函数.在调用JavaScript函数时,会自动发起Ajax请求调用后台提供的功能,并自动处理响应的数据。只是DWR仅为Java量身打造,无法使用在其他平台上,而ExtDirect为各个主流平台都提供了实现,而前台生成的JavaScript脚本也是完全基于EXT中的实现,更易于使用在EXT的项目中。Ext.direct命名空间下有若干的类是为了与服务端更密切地整合。Ext.Direct的一
4、些方法产生出来的数据经过Ext.data另外的一些类,就可以转给Ext.data.Stores处理。路由器Router在客户端与服务端部分方法之间,Ext.Direct使用了服务端“路由器(router)”的概念来直接请求。由于Ext.Direct是真正平台无关性的,所以你完全可以在以Java为解决方案的服务端,立刻替换成为C#的服务端,过程中你不需要对JavaScript作任何的变动或修改。ExtDirect的原理实际上,ExtDirect实际上只利用JSON作为数据的交换格式,在原来的Ajax基础上提供了自身的数据交互协议,应用的前后端使用同种协议进行调用,从而达到屏
5、蔽后端实现的目的。当调用ExtDirect的函数时,EXT会根据API配置发送如下格式的请求:{"type":"rpc","tid":2,"action":"ExtDirectTest","method":"TreeData",“data”:[“1”],"result":[{"text":"node","id":"xnode-6_append"}],"message":null}说明如下:action:表示调用的远程的类method:表示调用的过程的方法data:表示调用方法时传递的参数,一般为数组type:表示使用rpc方式进行远程调用tid:表示此次调用的事务idEx
6、t.Direct结合Asp.net使用准备工作Step1:准备Ext.Direct.dll(见附件DLL文件夹)Step2:准备Newtonsoft.Json.dll(见附件DLL文件夹)Step3:项目中添加两个dll的引用Step4:为后台暴露的远程方法声明API(ExtDirectTest.ashx),返回数据内容格式如下:Ext.app.REMOTING_API={"type":"remoting","url":"/T23/ExtDirectTest.ashx","namespace":"MyApp","actions":{"ExtDirectTest":[{"n
7、ame":"GetTime","len":0},{"name":"Upload","len":1,"formHandler":true},{"name":"LoadForm","len":0},{"name":"SubmitForm","len":1,"formHandler":true},{"name":"DateSample","len":2},{"name":"TreeData","len":1}]}};一个简单的Direct调用DemopublicoverridestringProviderName{get{retur