PBWEB客户端编程技巧总结(20210214191956)_第1页
PBWEB客户端编程技巧总结(20210214191956)_第2页
PBWEB客户端编程技巧总结(20210214191956)_第3页
PBWEB客户端编程技巧总结(20210214191956)_第4页
PBWEB客户端编程技巧总结(20210214191956)_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、PB11.5 WEB客户端编程技巧总结 一、概述 用PB11.5把现有C/S程序转换成 WEB应用程序后,保留了大部分 C/S环境下的代码,并且 大部分都能执行过去。但是在 BS平台下,原来的PB代码从客户端转成了 IIS上的服务代码, 原的客户端”就成了浏览器,转换后的客户端编程其实就是面向浏览器的编程。 根据目前我对 PB11.5所了解的情况,PB11在代码方面可以使用条件编译方式嵌入.NET代码, 其实我感觉.net里能实现的内容,用 PB代码也基本能实现,.net里不能实现的,PB也可实现 (如datawindow),但这些都属于服务端的编程范畴,实际应用中很少会碰到在PB里再嵌 入.

2、net代码的,除非要写一些很特殊的代码,所以,可以说,服务端方面仅用 PB代码就可以彻 底解决。 但实际上,这种纯 PB代码的程序一发布成 WEB后,会存在不少问题,在C/S环境下,要完成 一个操作往往需要多个交互过程,如打开窗口、选择行、输入数据、返回、刷新页面”这么一个 过程,转成B/S 后,运行是这样的 打开窗口(POSTBACK)、选择行(POSTBACK)、输入数据(回 车后POSTBACK)、返回(POSTBACK),那么多的POSTBACK 使得操作变得很笨重,就连简 单的一个 MESSAGEBOX ,都要2次POSTBACK : 打开消息窗(POSTBACK)、点确定 (POS

3、TBACK) ”。因此,使用PB11开发WEB程序将要面临一个很严峻的问题:如何提高客户 端的性能,减少 POSTBACK次数。 值得庆幸的是,PB11.5 的WEB页面使用了 AJAX技术,POSTBACK 并不会产生整个页面的 提交,而是部分提交。另外,PB11.5还提供了不少客户端的编程接口,可以通过这些编程接口 进一步优化页面。那么,有哪些地方可以运用javascript 和html代码优化页面呢? 1、数据窗口对象 appe ndedhtml属性。 刚接触PB11.5的WEB开发的时候,一定会被他的那么多unsupport属性所蒙蔽,原先在C/S 下绚丽多彩的界面,转成B/S后变得暗

4、淡无光,因此也就失去了进一步开发的乐趣。其实不然, PB提供了 appendedhtml的属性后,使 WEB界面编程变得更为灵活,一个小小的 appendedhtml,可以将DHTML、javascript等所有页面技术嵌入到里面去。可以实现的效 果如:透明、垂直居中、渐变、鼠标移动特效等等。 查看发布成WEB后的页面代码,会发现,appendedhtml里的内容是放在div appendedhtml里,也就是说,数据窗口的内容转成了WEB元素,如标签转成了 歹列就是。 Appendedhtml的写法:引号必须使用转义符 女口: modify( sfz.html.appendedhtml =

5、style = padding-top:2px;,)至于如何设置元素属性,可以查看DHTML手册 2、数据窗口事件。此方法是在数据窗口对象初始化的时候写入对应的脚本,如: #IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = uo_dw.js dw_1.O nClie ntltemCha nged = MyltemCha nged #END IF 另外,在发布成WEB勺时候,必须嵌入已写好的javascript 脚本,这些 被脚本会在页面的head区被包含进去。 经过上面代码一处理,数据窗口的事件被触发后就会直接跳到javascript 脚本去处理而

6、不执行 回调(就是PB里写的程序不会被执行)。 那么,哪些事件支持脚本编程呢?根据 PB11.5文档所提供的技术说明,目前仅限于数据窗口 内事件处理,包括 clicked、DoubleClicked 、RButt on Dow n、Butto nClicked、 ButtonClicking、ItemFocusChanged 、ItemError 、ItemChanged 、RowFocusChanged 在指定客户端事件脚本的时候,事件前都必须加” OnClient ”。 二、客户端程序的优化思路 借助javascript脚本技术,我们可以对目前程序上的几个操作瓶颈进行优化。 1、 数据窗口

7、的条件性 POSTBACK。 如果不对datawindow进行脚本处理,那么如果事件内有代码,则将会在触发该事件的时候执 行POSTBACK,这样会有很多没必要的POSTBACK。如,在itemchanged事件里写入了对 身份证输入后进行检查的代码,在IE下运行的情况是,该数据窗口的任何列输入完后都会执行 POSTBACK,有没有办法实现只输入身份证的时候才POSTBACK 呢?可以通过以下方法: (1) 在窗口的open事件里写入脚本。 #IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = uo_dw.js dw_1.O nClie ntltem

8、Cha nged = MyItemCha nged #END IF (2) 脚本里写入条件回调程序。 fun cti on MyItemCha nged (se nder, rowNumber, colum nN ame ,n ewValue) if(columnName= sfz ) return PBDataWi ndow_ltemCha ngedReject(se nder, rowNumber, colu mnN ame, n ewValue); Else /do no thi ng 其中,PBDataWi ndow_ltemCha ngedReject为调用数据窗口的 itemcha

9、 nged事件,数据 窗口提供的回调函数,可以在PBDataWindow.js找到,查阅PB帮助文档可以查看其具体用 法。 2、 PB代码向javascript脚本转化。 首先,必须理解 PB-WEB程序的运行模式,见下图: 从上图可以看岀,IE与数据库之间其实就是数据请求的关系,我们可以认为,除了需要从服务 端下载数据和页面加载的请求外,其他都是没必要的请求。这些没必要的请求包括: 1) messagebox。消息提示可以说是UI界面交互的最重要的环节之一,几乎所有业务操作都 会涉及,很遗憾的是,除了数据窗口事件里的javascript支持本地消息提示外,目前还没有一 种办法可以脱离IIS,

10、直接在PB代码里调用IE消息提示的方法。 2) 简单的数据检查。如登录时的验证码、输入格式校验、身份证合法性检查等,可以直接在 javascript里处理。 3) 辅助性的数据输入。包括下拉数据窗口、下拉日历等。在传统的C/S模式下,直接打开一个 窗口就可以实现下拉数据选择功能,但是这种方法在WEB下已经行不通,频繁的POSTBACK 会使操作变得笨重、缓慢,甚至比直接输入来的慢。但是有些下拉的数据又需要从服务端取,这 样可以将下拉窗口设计成共用模块启动时直接装载到页面,在需要调用的地方用javascript 代 码显示出来,然后象服务端请求数据,选择数据后返回、设置数据、隐藏下拉窗口,这一过

11、程只 要一个POSTBACK,即数据请求过程。 4) 页面切换。在IE下打开多个业务窗口,这些窗口都已经装载到了IE下,可以通过javascript 脚本实现页面显示、隐藏,以提高响应速度。 5) 窗口、对象的关闭、销毁。类似此操作,可以直接在IE下完成,无需要再送到IIS上处理。 6) 实现回车后焦点切换。打开PB安装文件所在路径,打开F:Program FilesSybasePowerBuilder 11.5DotNETwebrootscripts目录下的 dwcommon.js ,并 修改其代码段。函数为:HTDW_inputKeyDown() 代码 if (event.keyCode

12、= 9 修改为 if (eve nt.keyCode = 9 | eve nt.keyCode = 13) 实现按回车键的 tab 效果。 三、PB与javascript混合编程技巧 1、使用PB提供的javascript 函数 打开IIS目录,在发布好的站点文件夹下,有个scripts文件夹,存放的是所有 PB的内置函数, 这些函数描述了客户端的调用、回调方法,具体使用方法在PB文档里有做了描述。 数据窗口对象(大部分数据窗口函数接口里都用 sender做为参数)可以引用的函数可以在 如:this.Setltem = HTDW_Setltem;这行表示,可以调用数据窗口的Setltem()函

13、数进行 设置数据窗口值,至于Setltem 参数,可以查找 HTDW_Setltem函数的参数结构。如下图: 文薛即祐養査 WtfjQj) vr rrult; um ccIHjh - rhi.g4tCQlNuH(cl: viv rovUtij * thi5.ro5lfrot/-1J; 调用举例: 数据窗口的回调函数,可以在PBDataWi ndow.js里找到,上面已经举过例子,这里不做描述 了。 2、灵活地操控 WEB元素 WEB页面上,每个元素都有一个lD值,是唯一标识该元素的键值。如input name = OK lD = ID_OK type=butto n value=确定 “ on

14、 click =表示 确定”按钮的 ID 为 ID_OK。 要在javascript里编写程序实现与页面元素交互,最重要的一点是要弄清楚从PB转换成页面 后的元素的ID值,这些ID值是IIS发送过来的,与 PB里的对象名有一定的对应关系。目前 PB技术文档没有这方面的说明,但我们可以通过多种途径来获得这些元素ID。 1) 利用eve nt对象获得窗口事件的源、父对象 如,可以定义 var o = win dow.eve nt.srcEleme nt;获取鼠标在窗口上点击的对象,通过 o.pare ntEleme nt可以获取该对象的父对象。 2) 通过 getElementByName、get

15、ElementByld、getElementsByTagName 等方法获取 对象ID。 3) 通过alert消息提示将对象ID显示岀来。 有了这些ID,接下去如何操控界面元素,就和C/S编程差不多了,有关函数操作、属性操作等 可以参考javascript 和DHTML相关资料。 应用举例: 公司档案管理制度 一、总则 1、为加强本公司档案工作,充分发挥档案作用,全面提高档案管理水平,有效地保护及利用档案,为公司发展服务,特 制定本制度。 2、公司档案,是指公司从事经营、管理以及其他各项活动直接形成的对公司有保存价值的各种文字、图表、声像等不同形式的历史记录。公司档案分为受控档案和非受控档案。

16、 3、 公文承办部门或承办人员应保证经办文件的系统完整(公文上的各种附件一律不准抽存 )。结案后及时归档。工作变动或因故离职时应将经办的文件材料向接办人员交接清楚,不得擅自带走 或销毁。 二、文件材料的收集管理 1、公司指定专人负责文件材料的管理。 2、 文件材料的收集由各部门或经办人员负责整理,交总经理审阅后归档。 3、一项工作由几个部门参与办理的,在工作中形成的文件材料,由主办部门或人员收集,交行政部备案。会议文件由行政部收三、归档范围 1、重要的会议材料,包括会议的通知、报告、决议、总结、典型 2、本公司对外的正式发文与有关单位来往的文书。 3、本公司的各种工作计划、总结、报告、请示、批

17、复、会议记录、统计报表及简报。 4、本公司与有关单位签订的合同、协议书等文件材料。5、本公司职工劳动、工资、福利方面的文件材料。 6、本公司的大事记及反映本公司重要活动的剪报、照片、录音、录像等。四、归档要求 1、档案质量总的要求是:遵循文件的形成规律和特点,保持文件之间的有机联系,区别不同的价值,便于保管和利用。 2、归档的文件材料种数、份数以及每份文件的页数均应齐全完整。 3、在归档的文件材料中,应将每份文件的正件与附件、印件与定稿、请示与批复、转发文件与原件,分别立在一起,不得分开,文电应合一归档。 4、 不同年度的文件一般不得放在一起立卷;跨年度的总结放在针对的最后一年立卷;跨年度的会

18、议文件放在会议 开幕年。 5、档案文件材料应区别不同情况进行排列,密不可分的文件材料应依序排列在一起,即批复在前,请示在后;正件在前,附件在后;印件在前,定稿在后;其它文件材料依其形成规律或应 保持文件之间的密切联系并进行系统的排列。 6、案卷封面,应逐项按规定用钢笔书写,字迹要工整、 五、档案管理人员职责 1、按照有关规定做好 文件材料的收集、整理、分类、归档等工作。2、按照归档范围、要求,将文件材料按时归档。3、工作人员应当遵纪守法、忠于职守,努力维 护公司档案的完整与安全。 1、 公司档案只有公司内部人员可以借阅,借阅者都要填写借阅单,报主管人员批准后,方可借阅,其中非受控文档的借阅要由部门经理签字批准,受控文档的借阅要由总经理

温馨提示

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

评论

0/150

提交评论