毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長(zhǎng)、見(jiàn)賢思齊
當(dāng)前位置:公文素材庫(kù) > 計(jì)劃總結(jié) > 工作總結(jié) > PB11.5+WEB客戶(hù)端編程技巧總結(jié)

PB11.5+WEB客戶(hù)端編程技巧總結(jié)

網(wǎng)站:公文素材庫(kù) | 時(shí)間:2019-05-29 07:18:16 | 移動(dòng)端:PB11.5+WEB客戶(hù)端編程技巧總結(jié)

PB11.5+WEB客戶(hù)端編程技巧總結(jié)

PB11.5WEB客戶(hù)端編程技巧總結(jié)

一、概述

用PB11.5把現(xiàn)有C/S程序轉(zhuǎn)換成WEB應(yīng)用程序后,保留了大部分C/S環(huán)境下的代碼,并且大部分都能執(zhí)行過(guò)去。但是在BS平臺(tái)下,原來(lái)的PB代碼從客戶(hù)端轉(zhuǎn)成了IIS上的服務(wù)代碼,原的“客戶(hù)端”就成了瀏覽器,轉(zhuǎn)換后的客戶(hù)端編程其實(shí)就是面向?yàn)g覽器的編程。

根據(jù)目前我對(duì)PB11.5所了解的情況,PB11在代碼方面可以使用條件編譯方式嵌入.NET代碼,其實(shí)我感覺(jué).net里能實(shí)現(xiàn)的內(nèi)容,用PB代碼也基本能實(shí)現(xiàn),.net里不能實(shí)現(xiàn)的,PB也可實(shí)現(xiàn)(如datawindow),但這些都屬于服務(wù)端的編程范疇,實(shí)際應(yīng)用中很少會(huì)碰到在PB里再嵌入.net代碼的,除非要寫(xiě)一些很特殊的代碼,所以,可以說(shuō),服務(wù)端方面僅用PB代碼就可以徹底解決。

但實(shí)際上,這種純PB代碼的程序一發(fā)布成WEB后,會(huì)存在不少問(wèn)題,在C/S環(huán)境下,要完成一個(gè)操作往往需要多個(gè)交互過(guò)程,如“打開(kāi)窗口、選擇行、輸入數(shù)據(jù)、返回、刷新頁(yè)面”這么一個(gè)過(guò)程,轉(zhuǎn)成B/S后,運(yùn)行是這樣的“打開(kāi)窗口(POSTBACK)、選擇行(POSTBACK)、輸入數(shù)據(jù)(回車(chē)后POSTBACK)、返回(POSTBACK)”,那么多的POSTBACK使得操作變得很笨重,就連簡(jiǎn)單的一個(gè)MESSAGEBOX,都要2次POSTBACK:“打開(kāi)消息窗(POSTBACK)、點(diǎn)確定(POSTBACK)”。因此,使用PB11開(kāi)發(fā)WEB程序?qū)⒁媾R一個(gè)很?chē)?yán)峻的問(wèn)題:如何提高客戶(hù)端的性能,減少POSTBACK次數(shù)。

值得慶幸的是,PB11.5的WEB頁(yè)面使用了AJAX技術(shù),POSTBACK并不會(huì)產(chǎn)生整個(gè)頁(yè)面的提交,而是部分提交。另外,PB11.5還提供了不少客戶(hù)端的編程接口,可以通過(guò)這些編程接口進(jìn)一步優(yōu)化頁(yè)面。那么,有哪些地方可以運(yùn)用javascript和html代碼優(yōu)化頁(yè)面呢?

1、數(shù)據(jù)窗口對(duì)象appendedhtml屬性。

剛接觸PB11.5的WEB開(kāi)發(fā)的時(shí)候,一定會(huì)被他的那么多unsupport屬性所蒙蔽,原先在C/S下絢麗多彩的界面,轉(zhuǎn)成B/S后變得暗淡無(wú)光,因此也就失去了進(jìn)一步開(kāi)發(fā)的樂(lè)趣。其實(shí)不然,PB提供了appendedhtml的屬性后,使WEB界面編程變得更為靈活,一個(gè)小小的appendedhtml,可以將DHTML、javascript等所有頁(yè)面技術(shù)嵌入到里面去?梢詫(shí)現(xiàn)的效果如:透明、垂直居中、漸變、鼠標(biāo)移動(dòng)特效等等。

查看發(fā)布成WEB后的頁(yè)面代碼,會(huì)發(fā)現(xiàn),appendedhtml里的內(nèi)容是放在里,也就是說(shuō),數(shù)據(jù)窗口的內(nèi)容轉(zhuǎn)成了WEB元素,如標(biāo)簽轉(zhuǎn)成了,列就是。Appendedhtml的寫(xiě)法:引號(hào)必須使用轉(zhuǎn)義符~如:modify(‘sfz.html.appendedhtml="style=~~"padding-top:2px;~~"’),至于如何設(shè)置元素屬性,可以查看《DHTML手冊(cè)》。

2、數(shù)據(jù)窗口事件。此方法是在數(shù)據(jù)窗口對(duì)象初始化的時(shí)候?qū)懭雽?duì)應(yīng)的腳本,如:#IFDEFINEDPBWEBFORMTHEN

dw_1.JavaScriptFile="uo_dw.js"

dw_1.OnClientItemChanged="MyItemChanged"#ENDIF另外,在發(fā)布成WEB的時(shí)候,必須嵌入已寫(xiě)好的javascript腳本,這些被腳本會(huì)在頁(yè)面的head區(qū)被包含進(jìn)去。

經(jīng)過(guò)上面代碼一處理,數(shù)據(jù)窗口的事件被觸發(fā)后就會(huì)直接跳到j(luò)avascript腳本去處理而不執(zhí)行回調(diào)(就是PB里寫(xiě)的程序不會(huì)被執(zhí)行)。

那么,哪些事件支持腳本編程呢?根據(jù)PB11.5文檔所提供的技術(shù)說(shuō)明,目前僅限于數(shù)據(jù)窗口內(nèi)事件處理,包括clicked、DoubleClicked、RButtonDown、ButtonClicked、ButtonClicking、ItemFocusChanged、ItemError、ItemChanged、RowFocusChanged。在指定客戶(hù)端事件腳本的時(shí)候,事件前都必須加”O(jiān)nClient”。二、客戶(hù)端程序的優(yōu)化思路

借助javascript腳本技術(shù),我們可以對(duì)目前程序上的幾個(gè)操作瓶頸進(jìn)行優(yōu)化。1、數(shù)據(jù)窗口的條件性POSTBACK。

如果不對(duì)datawindow進(jìn)行腳本處理,那么如果事件內(nèi)有代碼,則將會(huì)在觸發(fā)該事件的時(shí)候執(zhí)行POSTBACK,這樣會(huì)有很多沒(méi)必要的POSTBACK。如,在itemchanged事件里寫(xiě)入了對(duì)身份證輸入后進(jìn)行檢查的代碼,在IE下運(yùn)行的情況是,該數(shù)據(jù)窗口的任何列輸入完后都會(huì)執(zhí)行POSTBACK,有沒(méi)有辦法實(shí)現(xiàn)只輸入身份證的時(shí)候才POSTBACK呢?可以通過(guò)以下方法:

(1)在窗口的open事件里寫(xiě)入腳本。#IFDEFINEDPBWEBFORMTHEN

dw_1.JavaScriptFile="uo_dw.js"

dw_1.OnClientItemChanged="MyItemChanged"#ENDIF

(2)腳本里寫(xiě)入條件回調(diào)程序。

functionMyItemChanged(sender,rowNumber,columnName,newValue){if(columnName==‘sfz’){returnPBDataWindow_ItemChangedReject(sender,rowNumber,columnName,newValue);

}Else{//donothing}}

其中,PBDataWindow_ItemChangedReject為調(diào)用數(shù)據(jù)窗口的itemchanged事件,數(shù)據(jù)窗口提供的回調(diào)函數(shù),可以在PBDataWindow.js找到,查閱PB幫助文檔可以查看其具體用法。2、PB代碼向javascript腳本轉(zhuǎn)化。

首先,必須理解PB-WEB程序的運(yùn)行模式,見(jiàn)下圖:數(shù)據(jù)庫(kù)SQL數(shù)據(jù)集EASERVER代理對(duì)象IISPBVMrequestIE代理對(duì)象response從上圖可以看出,IE與數(shù)據(jù)庫(kù)之間其實(shí)就是數(shù)據(jù)請(qǐng)求的關(guān)系,我們可以認(rèn)為,除了需要從服務(wù)端下載數(shù)據(jù)和頁(yè)面加載的請(qǐng)求外,其他都是沒(méi)必要的請(qǐng)求。這些沒(méi)必要的請(qǐng)求包括:

1)messagebox。消息提示可以說(shuō)是UI界面交互的最重要的環(huán)節(jié)之一,幾乎所有業(yè)務(wù)

操作都會(huì)涉及,很遺憾的是,除了數(shù)據(jù)窗口事件里的javascript支持本地消息提示外,目前還沒(méi)有一種辦法可以脫離IIS,直接在PB代碼里調(diào)用IE消息提示的方法。2)簡(jiǎn)單的數(shù)據(jù)檢查。如登錄時(shí)的驗(yàn)證碼、輸入格式校驗(yàn)、身份證合法性檢查等,可以

直接在javascript里處理。

3)輔助性的數(shù)據(jù)輸入。包括下拉數(shù)據(jù)窗口、下拉日歷等。在傳統(tǒng)的C/S模式下,直接

打開(kāi)一個(gè)窗口就可以實(shí)現(xiàn)下拉數(shù)據(jù)選擇功能,但是這種方法在WEB下已經(jīng)行不通,頻繁的POSTBACK會(huì)使操作變得笨重、緩慢,甚至比直接輸入來(lái)的慢。但是有些下拉的數(shù)據(jù)又需要從服務(wù)端取,這樣可以將下拉窗口設(shè)計(jì)成共用模塊啟動(dòng)時(shí)直接裝載到頁(yè)面,在需要調(diào)用的地方用javascript代碼顯示出來(lái),然后象服務(wù)端請(qǐng)求數(shù)據(jù),選擇數(shù)據(jù)后返回、設(shè)置數(shù)據(jù)、隱藏下拉窗口,這一過(guò)程只要一個(gè)POSTBACK,即數(shù)據(jù)請(qǐng)求過(guò)程。

4)頁(yè)面切換。在IE下打開(kāi)多個(gè)業(yè)務(wù)窗口,這些窗口都已經(jīng)裝載到了IE下,可以通過(guò)

javascript腳本實(shí)現(xiàn)頁(yè)面顯示、隱藏,以提高響應(yīng)速度。

5)窗口、對(duì)象的關(guān)閉、銷(xiāo)毀。類(lèi)似此操作,可以直接在IE下完成,無(wú)需要再送到IIS

上處理。

6)實(shí)現(xiàn)回車(chē)后焦點(diǎn)切換。打開(kāi)PB安裝文件所在路徑,打開(kāi)F:\\Program

Files\\Sybase\\PowerBuilder11.5\\DotNET\\webroot\\scripts目錄下的dwcommon.js,并修改其代碼段。函數(shù)為:HTDW_inputKeyDown()代碼if(event.keyCode==9&&!event.ctrlKey&&!event.altKey&&!event.shiftKey)ProcessTab(obj);修改為if((event.keyCode==9||event.keyCode==13)&&!event.ctrlKey&&!event.altKey&&!event.shiftKey)ProcessTab(obj);實(shí)現(xiàn)按回車(chē)鍵的tab效果。

三、PB與javascript混合編程技巧1、使用PB提供的javascript函數(shù)

打開(kāi)IIS目錄,在發(fā)布好的站點(diǎn)文件夾下,有個(gè)scripts文件夾,存放的是所有PB的內(nèi)置函數(shù),這些函數(shù)描述了客戶(hù)端的調(diào)用、回調(diào)方法,具體使用方法在PB文檔里有做了描述。

數(shù)據(jù)窗口對(duì)象(大部分?jǐn)?shù)據(jù)窗口函數(shù)接口里都用sender做為參數(shù))可以引用的函數(shù)可以在dwcommon.js里的functionHTDW_DataWindowClass(name)里找到,如下圖:

如:this.SetItem=HTDW_SetItem;這行表示,可以調(diào)用數(shù)據(jù)窗口的SetItem()函數(shù)進(jìn)行設(shè)置數(shù)據(jù)窗口值,至于SetItem參數(shù),可以查找HTDW_SetItem函數(shù)的參數(shù)結(jié)構(gòu)。如下圖:

調(diào)用舉例:

數(shù)據(jù)窗口的回調(diào)函數(shù),可以在PBDataWindow.js里找到,上面已經(jīng)舉過(guò)例子,這里不做描述了。

2、靈活地操控WEB元素

WEB頁(yè)面上,每個(gè)元素都有一個(gè)ID值,是唯一標(biāo)識(shí)該元素的鍵值。如表示“確定”按鈕的ID為ID_OK。

要在javascript里編寫(xiě)程序?qū)崿F(xiàn)與頁(yè)面元素交互,最重要的一點(diǎn)是要弄清楚從PB轉(zhuǎn)換成頁(yè)面后的元素的ID值,這些ID值是IIS發(fā)送過(guò)來(lái)的,與PB里的對(duì)象名有一定的對(duì)應(yīng)關(guān)系。目前PB技術(shù)文檔沒(méi)有這方面的說(shuō)明,但我們可以通過(guò)多種途徑來(lái)獲得這些元素ID。1)利用event對(duì)象獲得窗口事件的源、父對(duì)象

如,可以定義varo=window.event.srcElement;獲取鼠標(biāo)在窗口上點(diǎn)擊的對(duì)象,通過(guò)o.parentElement可以獲取該對(duì)象的父對(duì)象。

2)通過(guò)getElementByName、getElementById、getElementsByTagName等方法獲取對(duì)象

ID。

3)通過(guò)alert消息提示將對(duì)象ID顯示出來(lái)。

有了這些ID,接下去如何操控界面元素,就和C/S編程差不多了,有關(guān)函數(shù)操作、屬性操作等可以參考javascript和DHTML相關(guān)資料。

應(yīng)用舉例:

擴(kuò)展閱讀:PB11.5 WEB客戶(hù)端編程技巧

PB11.5WEB客戶(hù)端編程技巧201*年09月11日星期六22:51一、概述

用PB11.5把現(xiàn)有C/S程序轉(zhuǎn)換成WEB應(yīng)用程序后,保留了大部分C/S環(huán)境下的代碼,并且大部分都能執(zhí)行過(guò)去。但是在BS平臺(tái)下,原來(lái)的PB代碼從客戶(hù)端轉(zhuǎn)成了IIS上的服務(wù)代碼,原的“客戶(hù)端”就成了瀏覽器,轉(zhuǎn)換后的客戶(hù)端編程其實(shí)就是面向?yàn)g覽器的編程。

根據(jù)目前我對(duì)PB11.5所了解的情況,PB11在代碼方面可以使用條件編譯方式嵌入.NET代碼,其實(shí)我感覺(jué).net里能實(shí)現(xiàn)的內(nèi)容,用PB代碼也基本能實(shí)現(xiàn),.net里不能實(shí)現(xiàn)的,PB也可實(shí)現(xiàn)(如datawindow),但這些都屬于服務(wù)端的編程范疇,實(shí)際應(yīng)用中很少會(huì)碰到在PB里再嵌入.net代碼的,除非要寫(xiě)一些很特殊的代碼,所以,可以說(shuō),服務(wù)端方面僅用PB代碼就可以徹底解決。

但實(shí)際上,這種純PB代碼的程序一發(fā)布成WEB后,會(huì)存在不少問(wèn)題,在C/S環(huán)境下,要完成一個(gè)操作往往需要多個(gè)交互過(guò)程,如“打開(kāi)窗口、選擇行、輸入數(shù)據(jù)、返回、刷新頁(yè)面”這么一個(gè)過(guò)程,轉(zhuǎn)成B/S后,運(yùn)行是這樣的“打開(kāi)窗口(POSTBACK)、選擇行(POSTBACK)、輸入數(shù)據(jù)(回車(chē)后POSTBACK)、返回(POSTBACK)”,那么多的POSTBACK使得操作變得很笨重,就連簡(jiǎn)單的一個(gè)MESSAGEBOX,都要2次POSTBACK:“打開(kāi)消息窗(POSTBACK)、點(diǎn)確定(POSTBACK)”。因此,使用PB11開(kāi)發(fā)WEB程序?qū)⒁媾R一個(gè)很?chē)?yán)峻的問(wèn)題:如何提高客戶(hù)端的性能,減少POSTBACK次數(shù)。

值得慶幸的是,PB11.5的WEB頁(yè)面使用了AJAX技術(shù),POSTBACK并不會(huì)產(chǎn)生整個(gè)頁(yè)面的提交,而是部分提交。另外,PB11.5還提供了不少客戶(hù)端的編程接口,可以通過(guò)這些編程接口進(jìn)一步優(yōu)化頁(yè)面。那么,有哪些地方可以運(yùn)用javascript和html代碼優(yōu)化頁(yè)面呢?1、數(shù)據(jù)窗口對(duì)象appendedhtml屬性。剛接觸PB11.5的WEB開(kāi)發(fā)的時(shí)候,一定會(huì)被他的那么多unsupport屬性所蒙蔽,原先在C/S下絢麗多彩的界面,轉(zhuǎn)成B/S后變得暗淡無(wú)光,因此也就失去了進(jìn)一步開(kāi)發(fā)的樂(lè)趣。其實(shí)不然,PB提供了appendedhtml的屬性后,使WEB界面編程變得更為靈活,一個(gè)小小的appendedhtml,可以將DHTML、javascript等所有頁(yè)面技術(shù)嵌入到里面去?梢詫(shí)現(xiàn)的效果如:透明、垂直居中、漸變、鼠標(biāo)移動(dòng)特效等等。

查看發(fā)布成WEB后的頁(yè)面代碼,會(huì)發(fā)現(xiàn),appendedhtml里的內(nèi)容是放在里,也就是說(shuō),數(shù)據(jù)窗口的內(nèi)容轉(zhuǎn)成了WEB元素,如標(biāo)簽轉(zhuǎn)成了,列就是。Appendedhtml的寫(xiě)法:引號(hào)必須使用轉(zhuǎn)義符~如:modify(sfz.html.appendedhtml="style=~~"padding-top:2px;~~"),至于如何設(shè)置元素屬性,可以查看《DHTML手冊(cè)》。2、數(shù)據(jù)窗口事件。此方法是在數(shù)據(jù)窗口對(duì)象初始化的時(shí)候?qū)懭雽?duì)應(yīng)的腳本,如:#IFDEFINEDPBWEBFORMTHENdw_1.JavaScriptFile="uo_dw.js"

dw_1.OnClientItemChanged="MyItemChanged"#ENDIF另外,在發(fā)布成WEB的時(shí)候,必須嵌入已寫(xiě)好的javascript腳本,這些被腳本會(huì)在頁(yè)面的head區(qū)被包含進(jìn)去。

經(jīng)過(guò)上面代碼一處理,數(shù)據(jù)窗口的事件被觸發(fā)后就會(huì)直接跳到j(luò)avascript腳本去處理而不執(zhí)行回調(diào)(就是PB里寫(xiě)的程序不會(huì)被執(zhí)行)。

那么,哪些事件支持腳本編程呢?根據(jù)PB11.5文檔所提供的技術(shù)說(shuō)明,目前僅限于數(shù)據(jù)窗口內(nèi)事件處理,包括clicked、DoubleClicked、RButtonDown、ButtonClicked、ButtonClicking、ItemFocusChanged、ItemError、ItemChanged、RowFocusChanged。在指定客戶(hù)端事件腳本的時(shí)候,事件前都必須加”O(jiān)nClient”。二、客戶(hù)端程序的優(yōu)化思路

借助javascript腳本技術(shù),我們可以對(duì)目前程序上的幾個(gè)操作瓶頸進(jìn)行優(yōu)化。1、數(shù)據(jù)窗口的條件性POSTBACK。

如果不對(duì)datawindow進(jìn)行腳本處理,那么如果事件內(nèi)有代碼,則將會(huì)在觸發(fā)該事件的時(shí)候執(zhí)行POSTBACK,這樣會(huì)有很多沒(méi)必要的POSTBACK。如,在itemchanged事件里寫(xiě)入了對(duì)身份證輸入后進(jìn)行檢查的代碼,在IE下運(yùn)行的情況是,該數(shù)據(jù)窗口的任何列輸入完后都會(huì)執(zhí)行POSTBACK,有沒(méi)有辦法實(shí)現(xiàn)只輸入身份證的時(shí)候才POSTBACK呢?可以通過(guò)以下方法:

(1)在窗口的open事件里寫(xiě)入腳本。#IFDEFINEDPBWEBFORMTHENdw_1.JavaScriptFile="uo_dw.js"

dw_1.OnClientItemChanged="MyItemChanged"#ENDIF

(2)腳本里寫(xiě)入條件回調(diào)程序。

functionMyItemChanged(sender,rowNumber,columnName,newValue){if(columnName==sfz)

{returnPBDataWindow_ItemChangedReject(sender,rowNumber,columnName,newValue);}Else

{//donothing}}

其中,PBDataWindow_ItemChangedReject為調(diào)用數(shù)據(jù)窗口的itemchanged事件,數(shù)據(jù)窗口提供的回調(diào)函數(shù),可以在PBDataWindow.js找到,查閱PB幫助文檔可以查看其具體用法。2、PB代碼向javascript腳本轉(zhuǎn)化。

首先,必須理解PB-WEB程序的運(yùn)行模式,見(jiàn)下圖:

從上圖可以看出,IE與數(shù)據(jù)庫(kù)之間其實(shí)就是數(shù)據(jù)請(qǐng)求的關(guān)系,我們可以認(rèn)為,除了需要從服務(wù)端下載數(shù)據(jù)和頁(yè)面加載的請(qǐng)求外,其他都是沒(méi)必要的請(qǐng)求。這些沒(méi)必要的請(qǐng)求包括:1)messagebox。消息提示可以說(shuō)是UI界面交互的最重要的環(huán)節(jié)之一,幾乎所有業(yè)務(wù)操作都會(huì)涉及,很遺憾的是,除了數(shù)據(jù)窗口事件里的javascript支持本地消息提示外,目前還沒(méi)有一種辦法可以脫離IIS,直接在PB代碼里調(diào)用IE消息提示的方法。

2)簡(jiǎn)單的數(shù)據(jù)檢查。如登錄時(shí)的驗(yàn)證碼、輸入格式校驗(yàn)、身份證合法性檢查等,可以直接在javascript里處理。

3)輔助性的數(shù)據(jù)輸入。包括下拉數(shù)據(jù)窗口、下拉日歷等。在傳統(tǒng)的C/S模式下,直接打開(kāi)一個(gè)窗口就可以實(shí)現(xiàn)下拉數(shù)據(jù)選擇功能,但是這種方法在WEB下已經(jīng)行不通,頻繁的POSTBACK會(huì)使操作變得笨重、緩慢,甚至比直接輸入來(lái)的慢。但是有些下拉的數(shù)據(jù)又需要從服務(wù)端取,這樣可以將下拉窗口設(shè)計(jì)成共用模塊啟動(dòng)時(shí)直接裝載到頁(yè)面,在需要調(diào)用的地方用javascript代碼顯示出來(lái),然后象服務(wù)端請(qǐng)求數(shù)據(jù),選擇數(shù)據(jù)后返回、設(shè)置數(shù)據(jù)、隱藏下拉窗口,這一過(guò)程只要一個(gè)POSTBACK,即數(shù)據(jù)請(qǐng)求過(guò)程。4)頁(yè)面切換。在IE下打開(kāi)多個(gè)業(yè)務(wù)窗口,這些窗口都已經(jīng)裝載到了IE下,可以通過(guò)javascript腳本實(shí)現(xiàn)頁(yè)面顯示、隱藏,以提高響應(yīng)速度。

5)窗口、對(duì)象的關(guān)閉、銷(xiāo)毀。類(lèi)似此操作,可以直接在IE下完成,無(wú)需要再送到IIS上處理。

6)實(shí)現(xiàn)回車(chē)后焦點(diǎn)切換。打開(kāi)PB安裝文件所在路徑,打開(kāi)F:\\ProgramFiles\\Sybase\\PowerBuilder11.5\\DotNET\\webroot\\scripts目錄下的dwcommon.js,并修改其代碼段。函數(shù)為:HTDW_inputKeyDown()代碼if(event.keyCode==9&&!event.ctrlKey&&!event.altKey&&!event.shiftKey)ProcessTab(obj);修改為if((event.keyCode==9||event.keyCode==13)&&!event.ctrlKey&&!event.altKey&&!event.shiftKey)ProcessTab(obj);實(shí)現(xiàn)按回車(chē)鍵的tab效果。

三、PB與javascript混合編程技巧1、使用PB提供的javascript函數(shù)

打開(kāi)IIS目錄,在發(fā)布好的站點(diǎn)文件夾下,有個(gè)scripts文件夾,存放的是所有PB的內(nèi)置函數(shù),這些函數(shù)描述了客戶(hù)端的調(diào)用、回調(diào)方法,具體使用方法在PB文檔里有做了描述。

數(shù)據(jù)窗口對(duì)象(大部分?jǐn)?shù)據(jù)窗口函數(shù)接口里都用sender做為參數(shù))可以引用的函數(shù)可以在dwcommon.js里的functionHTDW_DataWindowClass(name)里找到,如下圖:

如:this.SetItem=HTDW_SetItem;這行表示,可以調(diào)用數(shù)據(jù)窗口的SetItem()函數(shù)進(jìn)行設(shè)置數(shù)據(jù)窗口值,至于SetItem參數(shù),可以查找HTDW_SetItem函數(shù)的參數(shù)結(jié)構(gòu)。如下圖:

調(diào)用舉例:

數(shù)據(jù)窗口的回調(diào)函數(shù),可以在PBDataWindow.js里找到,上面已經(jīng)舉過(guò)例子,這里不做描述了。

2、靈活地操控WEB元素WEB頁(yè)面上,每個(gè)元素都有一個(gè)ID值,是唯一標(biāo)識(shí)該元素的鍵值。如表示“確定”按鈕的ID為ID_OK。要在javascript里編寫(xiě)程序?qū)崿F(xiàn)與頁(yè)面元素交互,最重要的一點(diǎn)是要弄清楚從PB轉(zhuǎn)換成頁(yè)面后的元素的ID值,這些ID值是IIS發(fā)送過(guò)來(lái)的,與PB里的對(duì)象名有一定的對(duì)應(yīng)關(guān)系。目前PB技術(shù)文檔沒(méi)有這方面的說(shuō)明,但我們可以通過(guò)多種途徑來(lái)獲得這些元素ID。1)利用event對(duì)象獲得窗口事件的源、父對(duì)象

如,可以定義varo=window.event.srcElement;獲取鼠標(biāo)在窗口上點(diǎn)擊的對(duì)象,通過(guò)o.parentElement可以獲取該對(duì)象的父對(duì)象。

2)通過(guò)getElementByName、getElementById、getElementsByTagName等方法獲取對(duì)象ID。3)通過(guò)alert消息提示將對(duì)象ID顯示出來(lái)。

有了這些ID,接下去如何操控界面元素,就和C/S編程差不多了,有關(guān)函數(shù)操作、屬性操作等可以參考javascript和DHTML相關(guān)資料。應(yīng)用舉例:

…………引用

友情提示:本文中關(guān)于《PB11.5+WEB客戶(hù)端編程技巧總結(jié)》給出的范例僅供您參考拓展思維使用,PB11.5+WEB客戶(hù)端編程技巧總結(jié):該篇文章建議您自主創(chuàng)作。

來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。


PB11.5+WEB客戶(hù)端編程技巧總結(jié)》由互聯(lián)網(wǎng)用戶(hù)整理提供,轉(zhuǎn)載分享請(qǐng)保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/673111.html
相關(guān)文章