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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

5、163;jD«f&ult.4spsRDefault.aspK.cs(4)配置IIS:打開(kāi)Internet信息服務(wù),新建網(wǎng)站,別名設(shè)置Cellweb如圖:虛擬目錄選擇:選擇“下一步"完成IIS的配置.(5)在Default.aspx頁(yè)面中添力口CELL插件:直接將CELL插件的OBJECT標(biāo)記添加至網(wǎng)頁(yè)代碼,如下圖<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>注:如果用戶升級(jí)CAB包,先將原先服務(wù)器上放置的CAB包替換,再將CodeBase屬性中的Version設(shè)置為當(dāng)前CAB包的版本號(hào)。用戶再次訪問(wèn)時(shí),IE會(huì)重新提示下載最新的CAB包。第二章:實(shí)例詳解前一章介紹了運(yùn)行環(huán)境的配置,下面針對(duì)具體的示例程序進(jìn)行詳細(xì)分析步驟1:保存客戶端Ce

7、ll插件上的數(shù)據(jù)到服務(wù)器數(shù)據(jù)庫(kù)中.步驟2:讀取服務(wù)器數(shù)據(jù)庫(kù),將數(shù)據(jù)展示到客戶端Cell插件上.步驟1:保存客戶端Cell插件上的數(shù)據(jù)到服務(wù)器數(shù)據(jù)庫(kù)中':完整工程資源管理器截圖:解決方案資源管理器-解決方,.QX唱出國(guó)富里"二7解決方案不小步(1個(gè)項(xiàng)目)-DACellTebXj二棲p_Dat二二1Default,aspx雪Default,aspx.cs|mydb.mdb-羽HeadDBC«llaspx藝Ba虱DBCQLasp*”test,ell-tteb.Config-.回ttriteDECell,為印乂四WriteDBCdl.asps,cs2.1 打開(kāi)報(bào)表模板在這里

8、之所以在填充數(shù)據(jù)前要先有打開(kāi)報(bào)表模板,一方面可以加快影響網(wǎng)頁(yè)的運(yùn)行速度;另一方面,一旦更改報(bào)表樣式后,就得修改程序代碼,從而增加程序開(kāi)發(fā)和代碼維護(hù)的工作量;而在模板中存放報(bào)表格式,查詢和填充報(bào)表時(shí)先打開(kāi)模板,上傳數(shù)據(jù)和下傳數(shù)據(jù)時(shí)只需傳送實(shí)際的報(bào)表數(shù)據(jù),從而大大減少傳送數(shù)據(jù)量和工作量;模板文件可以通過(guò)外部程序(可以使用CELL自帶的報(bào)表設(shè)計(jì)器)設(shè)計(jì),模板文件存放至服務(wù)器端的某個(gè)虛擬目錄下,使用CELL的OpenFile方法打開(kāi),文件路徑可以是相對(duì)路徑。說(shuō)明:OpenFile函數(shù):在當(dāng)前表格中打開(kāi)Cell文件。如果打開(kāi)成功返回1,返回值如果不等于1,則表示打開(kāi)不成功,;此時(shí)還應(yīng)注意如果是WINXP

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

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

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

12、l函數(shù)的時(shí)候使用Vbscript腳本語(yǔ)言.Default.aspx頁(yè)面定義WriteDBWebCell。函數(shù)關(guān)鍵代碼如下截圖:<scriptlanguage="vbscript">subWriteDBWebCell。dimFlag'利用Cell編程接口SaveToBuffer將整個(gè)工作簿的內(nèi)容以二進(jìn)制(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é)點(diǎn)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頁(yè)面xmlhttp.open"POST"parseFile,falsexmlhttp.sendxmldoc'定義ReValue用于標(biāo)識(shí)保存操作是否成功.ReValue=trim(xmlhttp.responseText)ifReValue

15、="1"thenmsgbox"保存成功!"elsemsgbox"失??!"endifelseMsgBox"表格寫(xiě)入內(nèi)存錯(cuò)誤!"endifendsub'2.4客戶端填寫(xiě)報(bào)表并保存至服務(wù)器數(shù)據(jù)庫(kù).按照以上步驟,可按照實(shí)際的需求進(jìn)行報(bào)表的填寫(xiě)并點(diǎn)擊“保存數(shù)據(jù)",觸發(fā)WriteDBWebCell()函數(shù)函數(shù)定義在2.3中已經(jīng)介紹,上傳數(shù)據(jù)至頁(yè)面WriteDBCell.aspx,WrteDBCell.aspx.cs進(jìn)行保存到數(shù)據(jù)庫(kù)中的操作.具體代碼如下:由于示例中使用到數(shù)據(jù)庫(kù)mydb.mdb現(xiàn)在將數(shù)據(jù)庫(kù)表結(jié)構(gòu)

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頁(yè)面上傳的數(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ù)庫(kù)連接.stringsConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:CellWebmydb.mdb"OleDbConnectio

19、nObjsConn=newOleDbConnection(sConn);/定義Sql語(yǔ)句.stringsSql="insertintotestvalues('"+buffer+"')"OleDbCommanObjcmd=newOleDbComman(d>Sql,ObjsConn);ObjsConn.Open();/使用OleDbCommand數(shù)據(jù)保存至數(shù)據(jù)庫(kù)中.Objcmd.ExecuteNonQuery();ObjsConn.Close();returntrue;catch(Exception)throw;手動(dòng)填寫(xiě)報(bào)表數(shù)據(jù),并進(jìn)行

20、保存.由于工程運(yùn)行部分截圖(IE頁(yè)面過(guò)大,本截圖展示了一部分望諒解.):部門(mén):辦公室編號(hào)姓名到勤本薪全勤醫(yī)療職務(wù)主旨01王磊304口叩101100經(jīng)理02高明302344101100職工03張偉303321101100職工04李蘭301344101100職工05馮山30332110100職工06王302213101100職工壁事長(zhǎng),*總經(jīng)理一注意:示例程序中,報(bào)表內(nèi)容是手動(dòng)填寫(xiě)的,因此在示例運(yùn)行中,打開(kāi)遠(yuǎn)程模板后,需要客戶手動(dòng)填寫(xiě)報(bào)表步驟2:讀取服務(wù)器數(shù)據(jù)庫(kù),將數(shù)據(jù)展示到客戶端Cell插件上.3.1 ReadDBWebCell()函數(shù)Defalut.aspx頁(yè)面定義了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,儲(chǔ)存表頁(yè)內(nèi)容的緩沖區(qū).(2)因?yàn)閰?shù)data是一個(gè)VARIANT類(lèi)型的指針,因此正如本文開(kāi)始時(shí)介紹的在定義ReadDBWebCell函數(shù)的時(shí)候使用Vbscript腳本語(yǔ)言.R

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

25、3.1中ReadDBWebCell()函數(shù),定位到readDBCell.aspx頁(yè)面,在readDBCell.aspx.es進(jìn)行讀取數(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ù)庫(kù)連接.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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論