CELL插件中如何实现客户端与服务器端交换数据_第1页
CELL插件中如何实现客户端与服务器端交换数据_第2页
CELL插件中如何实现客户端与服务器端交换数据_第3页
CELL插件中如何实现客户端与服务器端交换数据_第4页
CELL插件中如何实现客户端与服务器端交换数据_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CELL插件中如何实现客户端与服务器端交换数据用友华表的CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件,和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端语言操纵控件,进行直接处理客户端数据,而客户的数据都存放在服务器端,这势必要求客户端的ActiveX控件与服务器端进行数据交互.针对客户端ActiveX控件如何与服务器端进行数据交互,本文介绍了实现客户端与服务器端数据交互必须的两个步骤如下:1、将客户端CELL插件中的数据上传至服务器端的数据库.方法:在客户端通过Cell的编程接口Sa

2、veToBuffer得到数据保存在XML,使用XMLHTTP技术将数据传至服务器并保存在服务器数据库.2、将服务器端数据库中的数据显示在客户端的CELL插件中.方法:连接服务器数据库得到数据,通过Response对象将数据传送到客户端,再利用Cell的编程接口ReadFromBuffer展示在客户端.下面以简单示例说明如何具体使用CELL插件实现客户端与服务器端交换数据(示例采用A+JAVASCRIPT+VBSCRIPT语言:注意:因为示例中用到Cell插件的编程接口(SaveToBuffer和ReadFormBuffer)因此需要使用到VBSCRIPT语言,具体请参见下面示例中的注意说明第一

3、章:环境配置1.1 硬件环境:操作系统:MicrosoftWindowsXP开发工具:MicrosotVisualStudio20051.2 服务器配置:服务器运行服务器脚本,必须在服务器端安装WEB服务器。请安装IIS.1.3 客户端配置:请使用IE5.5及以上的版本.1.4 创建工程:(1)新建工程:打开MicrosotVisualStudio2005创建新的项目工程.如下图:*CellfublictosoftVisualStudio文件编疆国)视图9网站)生成调试®工具Q)画口出)项目9Ctrl+Shifl+S网玷量11文件m从现有代马自飕项目国).(2)建立一个工程项目名称例

4、如:本示例设置项目名称为CellWeb,工程放置在D:CellWeb目录下.区I模桢(X):回国VisuilStudio已安装的短板鬲.祜正.墟f.网站,寓ASF.KET中0服务国个人网站初学者工具包JJASP.NETAJAX_EnabledVelSite喘空网站ASP.WETCrystalReportsV-我的桎板.搜索联机模板.fcSF.NET网站位置:卦系统*|吧吧*v|浏宽语言;7rLEualC#3确定取消建立工程完成后:会在PackageExp窗口下显示出新建的工程:解决方案资源管理翳-解决.。x心固固嗝二解决方案“CellWmb”6个项目)H件D:CwLL,Appjats1- &#

5、163;jD«f&ult.4spsRDefault.aspK.cs(4)配置IIS:打开Internet信息服务,新建网站,别名设置Cellweb如图:虚拟目录选择:选择“下一步"完成IIS的配置.(5)在Default.aspx页面中添力口CELL插件:直接将CELL插件的OBJECT标记添加至网页代码,如下图<body><formidforml"runat=server><div><objectID="DCellWebrclassid="CLSID:3F166327-8030-4881-8B

6、D2-EA25350E574A"codebase=/,htt-:/galhost/CbIIWeb/cmllwb5.CAB"style=width:821px;height:497px”></object></div></form></body>注:如果用户升级CAB包,先将原先服务器上放置的CAB包替换,再将CodeBase属性中的Version设置为当前CAB包的版本号。用户再次访问时,IE会重新提示下载最新的CAB包。第二章:实例详解前一章介绍了运行环境的配置,下面针对具体的示例程序进行详细分析步骤1:保存客户端Ce

7、ll插件上的数据到服务器数据库中.步骤2:读取服务器数据库,将数据展示到客户端Cell插件上.步骤1:保存客户端Cell插件上的数据到服务器数据库中':完整工程资源管理器截图:解决方案资源管理器-解决方,.QX唱出国富里"二7解决方案不小步(1个项目)-DACellTebXj二栖p_Dat二二1Default,aspx雪Default,aspx.cs|mydb.mdb-羽HeadDBC«llaspx艺Ba虱DBCQLasp*”test,ell-tteb.Config-.回ttriteDECell,为印乂四WriteDBCdl.asps,cs2.1 打开报表模板在这里

8、之所以在填充数据前要先有打开报表模板,一方面可以加快影响网页的运行速度;另一方面,一旦更改报表样式后,就得修改程序代码,从而增加程序开发和代码维护的工作量;而在模板中存放报表格式,查询和填充报表时先打开模板,上传数据和下传数据时只需传送实际的报表数据,从而大大减少传送数据量和工作量;模板文件可以通过外部程序(可以使用CELL自带的报表设计器)设计,模板文件存放至服务器端的某个虚拟目录下,使用CELL的OpenFile方法打开,文件路径可以是相对路径。说明:OpenFile函数:在当前表格中打开Cell文件。如果打开成功返回1,返回值如果不等于1,则表示打开不成功,;此时还应注意如果是WINXP

9、或WIN2003的操作系统还应在服务器上进行MIME配置,具体可参见CELL帮助中的“目录/FAQ/为什么打不开远程序文件”一文。Default.aspx页面定义了Button1的onclick事件定义了openfile()函数:<inputtype="button"id="button1"value="打开远程模板"onclick="OpenFile。”>scripttype="text/javascript”>FunctionOpenFile()(Varurl="http:/loca

10、lhost/CellWeb/test.cll”;document.getElementById(DCellWeb1").OpenFile(url,"');)</script>说明:url为Cell模板文件放置在服务器上的路径,请参考示例运行openfile()函数截图:ABCDEFHIIL123部门:办公室2006-10-14编号姓名到独全勤医疗主旨生活津贴iW囿束加班567理军妹总经理立管理解:2.2 客户端Cell插件上(WriteDBWebCell()函数):Default.aspx页面定义了Button3的onclick事件定义了WriteDBW

11、ebCell()函数:<inputtype="button"id="button3"value=保存数据"onclick="vbsript:WriteDBWebCell()”>注意:(1)Cell控件的编程接口:SaveToBuffer,将整个工作薄的内容以二进制(binary)的形式保存.VisualBasicSaveToBuffer(data)aslong参数:data,用来储存表页内容的缓冲区(buffer)(2)因为参数data是一个VARIANT类型的指针,因此正如本文开始时介绍的在定义WriteDBWebCel

12、l函数的时候使用Vbscript脚本语言.Default.aspx页面定义WriteDBWebCell。函数关键代码如下截图:<scriptlanguage="vbscript">subWriteDBWebCell。dimFlag'利用Cell编程接口SaveToBuffer将整个工作簿的内容以二进制(binary)的形式保存.Flag=document.getElementById("DCellWeb1").SaveToBuffer(buff)ifFlag>0thenparseFile="WriteDBCell.as

13、px"setxmldoc=createObject("MSXML.DOMDocumerjrt"setxmlhttp=createObject("Microsoft.XMLHTTP")xmldoc.async=falsefalsexmldoc.resolveExternals=建立xml脚本节点Cell_Content保存buff.xmldoc.loadXML"<root></root>"setroots=xmldoc.documentElementsetxnode=xmldoc.createNode(

14、1,"Cell_Content","")xnode.dataType="bin.hex"xnode.nodeTypedValue=buffroots.appendChild(xnode)'使用xmlhttp的POS方法上传buff至UWriteDBCell.aspx页面xmlhttp.open"POST"parseFile,falsexmlhttp.sendxmldoc'定义ReValue用于标识保存操作是否成功.ReValue=trim(xmlhttp.responseText)ifReValue

15、="1"thenmsgbox"保存成功!"elsemsgbox"失败!"endifelseMsgBox"表格写入内存错误!"endifendsub'2.4客户端填写报表并保存至服务器数据库.按照以上步骤,可按照实际的需求进行报表的填写并点击“保存数据",触发WriteDBWebCell()函数函数定义在2.3中已经介绍,上传数据至页面WriteDBCell.aspx,WrteDBCell.aspx.cs进行保存到数据库中的操作.具体代码如下:由于示例中使用到数据库mydb.mdb现在将数据库表结构

16、截图如下:表Etest司testBuffer*usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.Ul.WebControls;usingSystem.Web.Ul.WebControls.WebParts;usingSystem.Web.Ul.HtmlControls;usingSystem.Data.OleDb;usingSystem.

17、IO;publicpartialclassWriteDBCell:System.Web.UI.Page(protectedvoidPage_Load(objectsender,EventArgse)try(/创建XmlDocumen腰收DefaWt.aspx页面上传的数据.System.Xml.XmlDocumentxmlDoc=newSystem.Xml.XmlDocument();xmlDoc.Load(Request.InputStream);stringbuff=xmlDoc.DocumentElement.SelectSingleNode("Cell_Content&quo

18、t;).InnerText;/定义方法:WrieFile保存数据.if(WriteFile(buff)(Response.Write("1");else(Response.Write("0");catch(Response.Write("0");privateboolWriteFile(stringbuffer)(try(/创建数据库连接.stringsConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:CellWebmydb.mdb"OleDbConnectio

19、nObjsConn=newOleDbConnection(sConn);/定义Sql语句.stringsSql="insertintotestvalues('"+buffer+"')"OleDbCommanObjcmd=newOleDbComman(d>Sql,ObjsConn);ObjsConn.Open();/使用OleDbCommand数据保存至数据库中.Objcmd.ExecuteNonQuery();ObjsConn.Close();returntrue;catch(Exception)throw;手动填写报表数据,并进行

20、保存.由于工程运行部分截图(IE页面过大,本截图展示了一部分望谅解.):部门:办公室编号姓名到勤本薪全勤医疗职务主旨01王磊304口叩101100经理02高明302344101100职工03张伟303321101100职工04李兰301344101100职工05冯山30332110100职工06王302213101100职工壁事长,*总经理一注意:示例程序中,报表内容是手动填写的,因此在示例运行中,打开远程模板后,需要客户手动填写报表步骤2:读取服务器数据库,将数据展示到客户端Cell插件上.3.1 ReadDBWebCell()函数Defalut.aspx页面定义了Button2的oncli

21、ck事件定义了WriteDBCell()函数:<inputtype="button"id="button3"value=保存数据"onclick="vbsript:ReadDBWebCell()”>注意:(1)ReadFromBuffer,从缓冲区将数据读取到Cell控件中.VisualBasicReadFromBuffer(data)参数:data,储存表页内容的缓冲区.(2)因为参数data是一个VARIANT类型的指针,因此正如本文开始时介绍的在定义ReadDBWebCell函数的时候使用Vbscript脚本语言.R

22、eadDBWebCell()函数关键定义如下:functionReadDBWebCell()'创建XmlDocument,利用xmlhttp的POST"法定位readDBCell.aspx页面.setxmlhttp=createObject("Microsoft.XMLHTTP")setxmldoc=createObject("MSXML.DOMDocumer)t"xmldoc.loadXML"<root></root>"parseFile="readDBCell.aspx"

23、;xmlhttp.open"POST",parseFile,falsexmlhttp.sendxmldocReValue=trim(xmlhttp.responseText),使用StringToByte方法,读取数据展示到Cell插件中.StringToByte(ReValue)endfunction'StringToByte方法的定义.FunctionStringToByte(mstr)setxmldoc=createObject("MSXML.DOMDocumenJ"setbyteObj=xmldoc.createElement("

24、;byteObj")byteObj.dataType="bin.hex"byteObj.nodeTypedValue=mstrBuff=byteObj.nodeTypedValue'使用Cell插件的编程接口ReadFromBuffer将3.2中readDBCell.aspx.es回送的数据库数据读取到Cell插件中.doeument.getElementById("DCellWebl").ReadFromBuffer(Buff)endFunction3.2 从服务器数据库中读取数据,并将数据发送回Defalut.aspx页面处理.通过

25、3.1中ReadDBWebCell()函数,定位到readDBCell.aspx页面,在readDBCell.aspx.es进行读取数据和回送数据的操作,具体代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Colleetions;usingSystem.Web;usingSystem.Web.Seeurity;usingSystem.Web.UI;usingSystem.Web.Ul.WebControls;usingSystem.Web.Ul.WebControls.WebParts;usingS

26、ystem.Web.Ul.HtmlControls;usingSystem.Data.OleDb;usingSystem.IO;publicpartialclassReadDBCell:System.Web.UI.Page(protectedvoidPage_Load(objectsender,EventArgse)(try(/创建数据库连接.stringsConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:yCellWebWmydb.mdb"OleDbConnectionObjsConn=newOleDbConnection(sConn);stringsSql="select*fromtest"OleDbConnectionobjConn=newOleDbConnection(sConn);objConn.Open();OleDbCommand>bjCmd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论