CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)_第1頁
CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)_第2頁
CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)_第3頁
CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)_第4頁
CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、CELL插件中如何實現(xiàn)客戶端與服務器端交換數(shù)據(jù)用友華表的CELL插件是一款基于ActiveX技術的解決中國式報表顯示和打印的第三方控件,和其它第三方ActiveX控件一樣,用友華表CELL插件只能運行在客戶端,只能使用JAVASCRIPT、VBSCRIPT客戶端語言操縱控件,進行直接處理客戶端數(shù)據(jù),而客戶的數(shù)據(jù)都存放在服務器端,這勢必要求客戶端的ActiveX控件與服務器端進行數(shù)據(jù)交互.針對客戶端ActiveX控件如何與服務器端進行數(shù)據(jù)交互,本文介紹了實現(xiàn)客戶端與服務器端數(shù)據(jù)交互必須的兩個步驟如下:1、將客戶端CELL插件中的數(shù)據(jù)上傳至服務器端的數(shù)據(jù)庫.方法:在客戶端通過Cell的編程接口Sa

2、veToBuffer得到數(shù)據(jù)保存在XML,使用XMLHTTP技術將數(shù)據(jù)傳至服務器并保存在服務器數(shù)據(jù)庫.2、將服務器端數(shù)據(jù)庫中的數(shù)據(jù)顯示在客戶端的CELL插件中.方法:連接服務器數(shù)據(jù)庫得到數(shù)據(jù),通過Response對象將數(shù)據(jù)傳送到客戶端,再利用Cell的編程接口ReadFromBuffer展示在客戶端.下面以簡單示例說明如何具體使用CELL插件實現(xiàn)客戶端與服務器端交換數(shù)據(jù)(示例采用A+JAVASCRIPT+VBSCRIPT語言:注意:因為示例中用到Cell插件的編程接口(SaveToBuffer和ReadFormBuffer)因此需要使用到VBSCRIPT語言,具體請參見下面示例中的注意說明第一

3、章:環(huán)境配置1.1 硬件環(huán)境:操作系統(tǒng):MicrosoftWindowsXP開發(fā)工具:MicrosotVisualStudio20051.2 服務器配置:服務器運行服務器腳本,必須在服務器端安裝WEB服務器。請安裝IIS.1.3 客戶端配置:請使用IE5.5及以上的版本.1.4 創(chuàng)建工程:(1)新建工程:打開MicrosotVisualStudio2005創(chuàng)建新的項目工程.如下圖:*CellfublictosoftVisualStudio文件編疆國)視圖9網(wǎng)站)生成調(diào)試®工具Q)畫口出)項目9Ctrl+Shifl+S網(wǎng)玷量11文件m從現(xiàn)有代馬自颼項目國).(2)建立一個工程項目名稱例

4、如:本示例設置項目名稱為CellWeb,工程放置在D:CellWeb目錄下.區(qū)I模楨(X):回國VisuilStudio已安裝的短板鬲.祜正.墟f.網(wǎng)站,寓ASF.KET中0服務國個人網(wǎng)站初學者工具包JJASP.NETAJAX_EnabledVelSite喘空網(wǎng)站ASP.WETCrystalReportsV-我的桎板.搜索聯(lián)機模板.fcSF.NET網(wǎng)站位置:卦系統(tǒng)*|吧吧*v|瀏寬語言;7rLEualC#3確定取消建立工程完成后:會在PackageExp窗口下顯示出新建的工程:解決方案資源管理翳-解決.。x心固固嗝二解決方案“CellWmb”6個項目)H件D:CwLL,Appjats1- &#

5、163;jD«f&ult.4spsRDefault.aspK.cs(4)配置IIS:打開Internet信息服務,新建網(wǎng)站,別名設置Cellweb如圖:虛擬目錄選擇:選擇“下一步"完成IIS的配置.(5)在Default.aspx頁面中添力口CELL插件:直接將CELL插件的OBJECT標記添加至網(wǎng)頁代碼,如下圖<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包。第二章:實例詳解前一章介紹了運行環(huán)境的配置,下面針對具體的示例程序進行詳細分析步驟1:保存客戶端Ce

7、ll插件上的數(shù)據(jù)到服務器數(shù)據(jù)庫中.步驟2:讀取服務器數(shù)據(jù)庫,將數(shù)據(jù)展示到客戶端Cell插件上.步驟1:保存客戶端Cell插件上的數(shù)據(jù)到服務器數(shù)據(jù)庫中':完整工程資源管理器截圖:解決方案資源管理器-解決方,.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、之所以在填充數(shù)據(jù)前要先有打開報表模板,一方面可以加快影響網(wǎng)頁的運行速度;另一方面,一旦更改報表樣式后,就得修改程序代碼,從而增加程序開發(fā)和代碼維護的工作量;而在模板中存放報表格式,查詢和填充報表時先打開模板,上傳數(shù)據(jù)和下傳數(shù)據(jù)時只需傳送實際的報表數(shù)據(jù),從而大大減少傳送數(shù)據(jù)量和工作量;模板文件可以通過外部程序(可以使用CELL自帶的報表設計器)設計,模板文件存放至服務器端的某個虛擬目錄下,使用CELL的OpenFile方法打開,文件路徑可以是相對路徑。說明:OpenFile函數(shù):在當前表格中打開Cell文件。如果打開成功返回1,返回值如果不等于1,則表示打開不成功,;此時還應注意如果是WINXP

9、或WIN2003的操作系統(tǒng)還應在服務器上進行MIME配置,具體可參見CELL幫助中的“目錄/FAQ/為什么打不開遠程序文件”一文。Default.aspx頁面定義了Button1的onclick事件定義了openfile()函數(shù):<inputtype="button"id="button1"value="打開遠程模板"onclick="OpenFile?!?gt;scripttype="text/javascript”>FunctionOpenFile()(Varurl="http:/loca

10、lhost/CellWeb/test.cll”;document.getElementById(DCellWeb1").OpenFile(url,"');)</script>說明:url為Cell模板文件放置在服務器上的路徑,請參考示例運行openfile()函數(shù)截圖:ABCDEFHIIL123部門:辦公室2006-10-14編號姓名到獨全勤醫(yī)療主旨生活津貼iW囿束加班567理軍妹總經(jīng)理立管理解:2.2 客戶端Cell插件上(WriteDBWebCell()函數(shù)):Default.aspx頁面定義了Button3的onclick事件定義了WriteDBW

11、ebCell()函數(shù):<inputtype="button"id="button3"value=保存數(shù)據(jù)"onclick="vbsript:WriteDBWebCell()”>注意:(1)Cell控件的編程接口:SaveToBuffer,將整個工作薄的內(nèi)容以二進制(binary)的形式保存.VisualBasicSaveToBuffer(data)aslong參數(shù):data,用來儲存表頁內(nèi)容的緩沖區(qū)(buffer)(2)因為參數(shù)data是一個VARIANT類型的指針,因此正如本文開始時介紹的在定義WriteDBWebCel

12、l函數(shù)的時候使用Vbscript腳本語言.Default.aspx頁面定義WriteDBWebCell。函數(shù)關鍵代碼如下截圖:<scriptlanguage="vbscript">subWriteDBWebCell。dimFlag'利用Cell編程接口SaveToBuffer將整個工作簿的內(nèi)容以二進制(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腳本節(jié)點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"失?。?quot;endifelseMsgBox"表格寫入內(nèi)存錯誤!"endifendsub'2.4客戶端填寫報表并保存至服務器數(shù)據(jù)庫.按照以上步驟,可按照實際的需求進行報表的填寫并點擊“保存數(shù)據(jù)",觸發(fā)WriteDBWebCell()函數(shù)函數(shù)定義在2.3中已經(jīng)介紹,上傳數(shù)據(jù)至頁面WriteDBCell.aspx,WrteDBCell.aspx.cs進行保存到數(shù)據(jù)庫中的操作.具體代碼如下:由于示例中使用到數(shù)據(jù)庫mydb.mdb現(xiàn)在將數(shù)據(jù)庫表結構

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(/創(chuàng)建XmlDocumen腰收DefaWt.aspx頁面上傳的數(shù)據(jù).System.Xml.XmlDocumentxmlDoc=newSystem.Xml.XmlDocument();xmlDoc.Load(Request.InputStream);stringbuff=xmlDoc.DocumentElement.SelectSingleNode("Cell_Content&quo

18、t;).InnerText;/定義方法:WrieFile保存數(shù)據(jù).if(WriteFile(buff)(Response.Write("1");else(Response.Write("0");catch(Response.Write("0");privateboolWriteFile(stringbuffer)(try(/創(chuàng)建數(shù)據(jù)庫連接.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數(shù)據(jù)保存至數(shù)據(jù)庫中.Objcmd.ExecuteNonQuery();ObjsConn.Close();returntrue;catch(Exception)throw;手動填寫報表數(shù)據(jù),并進行

20、保存.由于工程運行部分截圖(IE頁面過大,本截圖展示了一部分望諒解.):部門:辦公室編號姓名到勤本薪全勤醫(yī)療職務主旨01王磊304口叩101100經(jīng)理02高明302344101100職工03張偉303321101100職工04李蘭301344101100職工05馮山30332110100職工06王302213101100職工壁事長,*總經(jīng)理一注意:示例程序中,報表內(nèi)容是手動填寫的,因此在示例運行中,打開遠程模板后,需要客戶手動填寫報表步驟2:讀取服務器數(shù)據(jù)庫,將數(shù)據(jù)展示到客戶端Cell插件上.3.1 ReadDBWebCell()函數(shù)Defalut.aspx頁面定義了Button2的oncli

21、ck事件定義了WriteDBCell()函數(shù):<inputtype="button"id="button3"value=保存數(shù)據(jù)"onclick="vbsript:ReadDBWebCell()”>注意:(1)ReadFromBuffer,從緩沖區(qū)將數(shù)據(jù)讀取到Cell控件中.VisualBasicReadFromBuffer(data)參數(shù):data,儲存表頁內(nèi)容的緩沖區(qū).(2)因為參數(shù)data是一個VARIANT類型的指針,因此正如本文開始時介紹的在定義ReadDBWebCell函數(shù)的時候使用Vbscript腳本語言.R

22、eadDBWebCell()函數(shù)關鍵定義如下:functionReadDBWebCell()'創(chuàng)建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方法,讀取數(shù)據(jù)展示到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回送的數(shù)據(jù)庫數(shù)據(jù)讀取到Cell插件中.doeument.getElementById("DCellWebl").ReadFromBuffer(Buff)endFunction3.2 從服務器數(shù)據(jù)庫中讀取數(shù)據(jù),并將數(shù)據(jù)發(fā)送回Defalut.aspx頁面處理.通過

25、3.1中ReadDBWebCell()函數(shù),定位到readDBCell.aspx頁面,在readDBCell.aspx.es進行讀取數(shù)據(jù)和回送數(shù)據(jù)的操作,具體代碼如下: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(/創(chuàng)建數(shù)據(jù)庫連接.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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論