基于 J a v a S c r i p t 与 D B G R I D控件的 B / S结构客户端
联想式录入技术的设计与实现
赵成勇, 周  南, 邱小彬
( 中国农业大学网络中心, 北京 1 0 0 0 8 3 )

1 问题的提 出
随着 I n t e me t 技术的兴起, 应用软件的结构已从
原来的 C / s ( C l i e n t / S e r v e r , 客户机/ 服务器) 结构方式
转向B / S ( B r o w s e r / S er v e r , 浏览器/ 服务器) 方式。B / S 
结构的客户端完全由浏览器来承担, 这给应用软件的
发布和维护带来了很大的方便; 但由于不能象 C / S 
结构的客户端那样提供丰富的 G U I 图形界面, 使得
数据录入界面过于简单且不够人性化, 随之带来数据
录入效率的问题, 常常会引起客户的抱怨。如: 回车
键不能在各输入焦点间切换; 不能在浏览器一个页面
中直接对数据库一个表的记录进行方便地显示、 删
除、 修改操作等。这些数据录入的问题在 C / S 模式
下不需要特殊的技术和方法, 一般的开发工具都能解
决, 而在 B / S 结构的软件设计中, 却是需要软件开发
人员自己去花费精力和时间去解决这个问题。本文
给出的是基于 J a v a s er i p t 与 D B G R I D控件技术在 B / S 
结构下实现联想式提高数据录入效率的一种方法, 希
收稿 日期 : 2 O O 4—0 9—2 2 
作者简介: 赵成勇( 1 9 8 1 一) , 男, 硕士生, 研究方向: 计算机网络应用。 
望在解决 B / S结构客户端的录入速度和易操作性方
面做一些探索, 起到抛砖引玉的作用。 
2  J a v a S c r i p t 和 D B G R I D控件介绍
J a v a s er i p t 是一种基于对象( O b j e c t ) 和事件驱动
( E v e n t   D r i v e n ) 并具有安全性能的脚本语言。它可以
直接嵌入 H T M L 文档中, 也可动态装载。它采用以事
件驱动的方式直接对用户或客户输入做出响应, 无须
经过 We b 服务程序而依赖于浏览器本身, 只要能运
行浏览器的计算机, 并支持 J a v a s er i p t 的浏览器即可
正确执行, 与操作环境无关。 
D B G R I D可称之为数据网格, 开始出现时是为 C / 
s 方式下数据库应用程序开发提供的数据操作控件, 
用于全屏幕显示和编辑数据库表中的记录, 表现为网
格的形式。因此, 使用该控件能很好地提高数据录入
的效率。 
在B / S 方式下, 客户端( 浏览器) 可以通过使用
D B G R I D控件来改善用户的操作界面。备选的 D B — 
维普资讯 http://www.cqvip.com 2 1 2   农业图书情报学刊: 计算机技术与应用  第 1 7卷
G R I D控件分为基于 A c t i v e X技术的和基于 J a v a S c r i p t 
技术的两种形式, 这两种 D B G R I D控件在使用时是不

样的。在使用基于 A c t i v e X技术的 D B G R I D控件
时, 需要在每台客户机上安装, 这样一旦需求发生变
化, 每台客户机上的控件也必须重新下载安装。而在
使用基于 J a v a S c r i p t 技术的 D B G R I D控件时, 是不需
要单独安装的。相当于用浏览器能直接解释执行
J a v a S c r i p t 脚本语言编写的录入界面, 并在内存中保存
用户操作的数据, 因此, 既使因需求发生变化而变化
的 D B G R I D控件, 也是浏览器能直接解释执行的, 并
不需要另外安装, 降低了软件升级的难度。 
下面分别给出在 皿中使用两种 D R G R I D控件的
示例代码: 
( 1 ) 使用基于A c t i v e X技术的D B G R I D控件
<OB J EC T
Ⅲ=“ 控件标识名, 提供 H T ML代码访问该控件的入口” 
C L A S S I D:“ 操作系统中控件对象唯一的Ⅲ 号” 
C O D E B A S E=“ 控件位置” 设置控件在 I E中的宽度, 高度
等 > 
</0B J EC T > 
( 2 ) 使用基于 J a v a S c r i p t 技术的 D B G R I D控件
页面导入时调用 J a v a S c r i p t函数 f u n c t i o n   i n i t - l o a d ( ) , 在该
函数中主要包括以下功能语句: 
1 ) 新建Q u e r y对象, 在D B G R I D的J S包中定义
r   Q u e r y ( ‘ q u e r y mt t s t e r ’ ) ; 
2 ) 与服务器端固定格式的X ML文件绑定, 定义 D B G R I D 
的各列名
q u e r y ma s t e r . O p e n U r l =“ r e a d x m 1 . j s p ?N a m e =S t u d e n t . x m l ” ; 
3 ) 设置服务器端处理提交数据的程序
q u e r y ma s t e r . P o s t U r l =“ S t u d e n t _ S a v e . j s p ” : 
4 ) 定义 Q u e r y列名
v a r   f :n e w   F i e l d ( “ S t u d e n t . N o ” , “ V A R C H ' ’ ) ; 
q u e r y m a s t e r . F i e l d s . A d d ( f ) ; 
5 ) 定义D B G R I D对象
I l e w   D B G r i d ( ‘ d b g r i d ’ ) ; 
6 ) 设置在 H T ML中的属性, 如宽, 高等, 并添加数据网格
的列
v 日 r   c o l l :n e w   C o l u mn ( ‘ S t u d e n t - N o ’ , ‘ 学号’ ) ; 
c 0 1 1 . wi d t h=3 0; 
d b g r i d . C ol s . A d d ( c o l 1 ) ; 
7 ) 设置数据集, 与前面的Q u e r y 对象绑定
d b g f i d 2 . Da t a S e t   q u e r y ma s t e r ; 
本文介绍的联想式录入实现方法是采用基于 J a v a S c r i p t 
技术的D B G R I D控件。 
3  B / S 结构客户端联想式录入功能的实现技术
B / S结构中, 客户端联想式录入功能是指, 在浏
览器里输入一条记录时, 当输入一个代码后, 不需要
提交到服务器去查找数据库, 就能直接在客户端显示
出与该代码相关的其它信息。比如, 在一个学生成绩
管理的软件中, 不提供客户端联想式录入功能时, 在
输入学号之后, 必须先提交到服务器, 才能在客户端
录入界面上显示出学生的姓名、 性别、 班级等信息; 如
果提供客户端联想式录入功能, 则在客户端就能实现

输入学号, 马上就能显示学生的姓名、 性别、 班级等
信息。 
在使用基于 J a v a S c r i p t 技术的 D B G R I D控件来实
现客户端联想式录入功能时, 在本地硬盘上, 以 X M L 
文件的形式存放需要联想式显示的数据, 相当于本地
数据库。用户在 D B G R I D录入区中进行操作, 当输入
基础信息 中的一个 I 【 ) 号时, 将通过触发相应的
J a v a S c r i p t 方法来使用 皿浏览器内嵌的 X ML 解析器
实例( M i c r o s o f t . x m l d o m) 。M i c r o s o f t . x m l d o m对象对基
础信息的 X M L文件做解析, 找到该 I 【 ) 号所在 D O M 
( 文档对象模型) 树的节点, 取出其对应的其它信息, 
并在 D B G R I D相应数据项位置进行显示。 
当用户在浏览器上的D B G R I D录入区作添加、 修
改或删除数据记录的操作时, 均会触发 J a v a S c r i p t 方
法将相应的变化记录到另一个 X M L格式的输人流
中, 该输人流是在客户端的内存中, 称之为录入信息。 
当用户将最终的录入结果提交到服务器时, 在服务器
端有相应的程序对该 X M L输人流作解析, 分析用户
做了哪些添加、 修改、 删除数据的操作, 并将分析结果
更新到数据库相应的表。客户端联想式录入功能的
工作原理如图 1 所示: 
下面给出学生成绩管理中的联想式录入功能的
具体实现。在客户端学生的基础信息按照下列格式
组织成 X ML文件: . 
<R O W学号 =” ? ” 姓名 =” ? ” 性别 =” ? ” 家庭住
址 =” ? ” > 
用户在 D B G R I D中录入学生的学号后, 将触发一
个 J a v a S c r i p t 方法, 其主要内容包括: 
( 1 ) 定义 A c t i v e X O b j e c t 
v a r   v . s t u d e n t d a t a=l l e W " A c t i v e X O b j e c t ( “ Mi c r os o f t . 
x ml d o m” ) ; v . s t u d e n t d a t a=f a l s e ; 
( 2 ) 解析本地 X M L文件
v . s t u d e n t d a t a . 1 o a d ) ( 池 ( 7 . x m1 ) ; 
( 3 ) 查找相应的节点
n o d=v . s t u d e n t d a t a . s e l e c t S i n g l e N o de ( “ / / R O W【 @
学号=” ’ +?+“ ’ ] ” ) ; i f ( n o d!=删Ⅱ) { 
维普资讯 http://www.cqvip.com 箜 塑  壑堕 篁! 叁 — J a — v a . S c r i p t - q   D B G R I D 控件的B / s 结构客户端联想式录入技术的设计与实现  2 1 3 
取出所需数据
v A d d r e s s =n o d . g e t A t t r i b u t e ( “ 姓名” ) ; 
客户端

( 4 ) 赋值给 D B G R I D相应数据项
服务器端


浏   I   I   I   I 
— I腽落 盟 
I   I   耱辱
X M L 文件  j 
审  I   I   ( 基 础 信 息 ) r _ _ 一   I   I   I   i   X l 也 文 档   — L 一 一   1 ( D B G R I D 各   \ — / / — — J   I   I   【 列 名 信 息 )   I   一

/— 、 
i   i   ; n 皿 树   !   l   一 I   X M L I   一 』 ( 录 入   、 、 √ /—  L /—— 、 J !   L 
— .   … j ………一   ………, :   ~……………一   : 
图 1 客户端联想式录入功能的工作原理示意图
在实际应用中, 用户需要联想显示的信息不一定
是在数据库的一个表中, 而是要从数据库几个表中联
合查询得到; 另外, 即使是这些基础信息, 其内容也是
会变化的, 比如一个学生的家庭地址发生变化, 等等。 
因此, 应用软件还需要在服务端提供一个程序, 负责
基础信息版本维护功能, 即查询并组织好用户所需要
的基础信息, 形成 x   文件, 并由用户下载到本地; 
当基础信息发生变化时, 自动组织好新的基础信息, 
提醒用户或自动更新客户端的X   文件。 
4 结束语
在一个需要满足比较大的录入工作量的 B / S 结
构的应用软件中, 用户操作的简便性和快速性是系统
不得不考虑的问题。本文使用基于 J a v a S c r i p t 和 D B . 
G R I D控件来实现客户端联想式录入功能, 可以提高
数据录入的效率。在软件的实际应用中, 当用户输入
的记录平均在 1 0 0条时, 软件的运行速度是正常的, 
界面的录入速度和易操作性能够满足用户的业务需
要。但由于本方法中, 用户的录人信息是以X ML 文
档的形式存放在客户端内存中, 当用户一次性录人的
数据达到 3 0 0多条时, 在内存中的 X M L文档就很臃
肿了, 客户端录入的速度开始变得非常慢, 因此, 对于
录入信息的X M L文档的格式应当越精简越好。 
实现利用初始信息简化用户录入操作的方法中
采用 M i c r o s o f t . x m l d o m解析客户端 X M L文件, 而文档
对象模型( D O M) 的构造却很费时。对于一个 D O M 
实例, 它们使用的 R A M可以达到按原始字节计算的
输入 X M L流的五倍。这通常会导致应用程序过度切
换正在使用的内存, 导致性能直线下降  ] 。这也是本
方法可以继续改进的地方。

基于 J a v a S c r i p t 与 D B G R I D控件的 B / S结构客户端联想式录入技术的设计与实现相关推荐

  1. 基于springboot+vue(thymeleaf)+mysql下的自创音乐网站平台--CrushMusic(开发日志十四)--audio控件重写音乐播放

    本次花了很大精力去完成了播放界面,虽然歌词同步这里没完成,但后续还是可以完善的,这次我重写了audio控件,让audio是自己想要的样式,先看成果图.  这个界面参考的是酷狗音乐网页版的布局,感觉自己 ...

  2. jQuery:收集一些基于jQuery框架开发的控件/jquery插件2

    Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. 主页:http://letmehaveblog.blogspot.com/2007/10/ ...

  3. 基于Authorware课件的具有导航功能的ActiveX控件的设计和实现

    随着计算机的普及,Authorware已经步入了校园.企业和部队.由于Authorware有多媒体制作的优势,以及制作简单,Authorware受到学校教师.企业和部队培训人员的高度关注,每年都有很多 ...

  4. python webkit内核_Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件

    在C#中,默认的WebBrowser控件默认使用的是IE的core,而IE的种种遭人吐槽的诟病使我不敢轻易使用WebBrowser,因此,打算使用Chrome的内核替换IE.Chrome的内核使用的是 ...

  5. matlab 算 cramer s v,基于Cramer’s V指数的遥感影像特征选择方法专利_专利查询 - 天眼查...

    1.基于Cramer' S V指数的高分辨遥感影像特征选择方法,其特征在于:包括以下步 骤: 步骤1 :对获取的遥感影像进行预处理以及影像特征提取: 步骤2 :基于Cramer' s V关联指数的连续 ...

  6. 带传动计算机辅助测试系统,基于VisualBasic的V型带传动计算机辅助设计

    第34卷 第6期 基于VisualBasic的V型带传动计算机辅助设计 39 文章编号:1004-2539(2010)06-0039-04 基于VisualBasic的V型带传动计算机辅助设计 徐支凤 ...

  7. (转)基于MVC4+EasyUI的Web开发框架形成之旅--界面控件的使用

    http://www.cnblogs.com/wuhuacong/p/3317223.html 在前面介绍了两篇关于我的基于MVC4+EasyUI技术的Web开发框架的随笔,本篇继续介绍其中界面部分的 ...

  8. android layout(l, t, r, b);,服务器里的a,t,l,r,b是什么意思? Android编程中关于layout(l,t,r,b)函数的问题...

    导航:网站首页 > 服务器里的a,t,l,r,b是什么意思? Android编程中关于layout(l,t,r,b)函数的问题 服务器里的a,t,l,r,b是什么意思? Android编程中关于 ...

  9. 《R语言编程艺术》——1.4 R语言中一些重要的数据结构

    1.4 R语言中一些重要的数据结构 R有多种数据结构.本节将简单介绍几种常用的数据结构,使读者在深入细节之前先对R语言有个大概的认识.这样,读者至少可以开始尝试一些很有意义的例子,即使这些例子背后更多 ...

最新文章

  1. golang网络编程
  2. MySQL服务的启动和停止
  3. Request.Form的用法
  4. python矩阵运算_python 矩阵运算
  5. springmvc原理、springmvc流程
  6. win7怎么像xp一样搜索计算机,win7可以象XP那样直接在我的电脑里面直接打开摄像头吗...
  7. 软件测试岗位职责和划分
  8. 网游加速器的工作原理
  9. 【串口服务器】的桥接模式
  10. 检测周转时间 TAT :TURN-AROUND TIME
  11. SpringMVC -- Restful风格的API
  12. 2019 CSP-J 游记(CQ LNBS考场 的退役之战)
  13. JAVA中如何解决超卖,Redis解决库存超卖问题实例讲解
  14. 深入浅出理解视频编码H264结构(内涵福利)
  15. 【推荐系统论文精读系列】(八)--Deep Crossing:Web-Scale Modeling without Manually Crafted Combinatorial Features
  16. 在服务器上离线下载并在线播放 Cloud Torrent
  17. lncRNASNP:SNP位点对lncNA结构和lncRNA-miRNA影响的数据库
  18. 单片机-c语言LED灯循环闪烁
  19. 使用ctex宏包出现的kpathsea错误
  20. 银河麒麟高级服务器部署glusterfs

热门文章

  1. Vue2+Spirngboot前后端分离项目(二)
  2. 2013 imac 安装 win7
  3. 300 毫秒点击延迟的来龙去脉
  4. Python 微信机器人
  5. 工作效率提升技巧二:帕累托法则
  6. python打印万年历_python打印万年历
  7. 评价目标检测的方法map 新方法 TIDE
  8. 界面控件DevExpress v17.2.7|附下载
  9. Python全栈之路:字典dict常用方法
  10. Hibernate 3 深度解析