1 前言
在日常的工作过程中,经常性地需要下级各个单位上报需要的数据,如果按照通常的做法,由编程人员一个个手工制作,工作效率低下。这同时也产生了两方面的问题:一是本单位没有这方面的人才储备,二是也不能满足工作阶段的随时需要。为了解决以上两种问题,本文结合Javascript技术和网页技术,设计出一个自动产生报表模板的方法,其可以快速的实现数据的采集和展现,用户不需要了解任何软件开发技术,就可以自己定义数据录入页面,可以对最终的报表格式进行简单控制,这样就可以满足客户在将来很多不确定的需求。
2 设计思路
使用过Dreamwave、VB\VC等设计网页报表环境的人员都知道,在设计报表的过程中,需要在设计页面上放置需要用户填写的各类控件,其中包括单行编辑框、多行编辑框、下拉列表框等输入控件。在开始设计网页报表时,这些控件只需要页面设计者用鼠标拖动就可以实现。如果要在设计及好的网页中修改控件的位置、大小或者填写新的控件,那就不可以实现上述操作。
本文首先在网页中设计一个能够显示包括单行编辑框、多行编辑框、下拉列表框等输入控件的热区,用户只要点击(或拖放)其中的一个控件名称到设计页面上,后台就把默认的控件属性参数从数据库中读出,形成一条Html语句行,这样就在设计页面上形成了一个控件。具体数据流程图如下:

3 实现过程
单行编辑框、多行编辑框、下拉列表框等输入控件的英文名称要在控件拖放的过程中传递给创建相应控件的子过程doCreateCtrl(type,ct),也就是传递两个参数,分别为CUSTOMER和SELECT或(TEXT、TEXTAREA、RADIO、CHECHBOX)。
3.1 获取默认控件参数
在控件的拖放过程中,不可能先指定控件的高度、宽度、底色等参数,这样在页面调用时首先指定。
(1)指定参数
#resource{
height: 50;
width: 100%;
border:solid;
border-style:ridge;
border-width:1;
background-color:white;
}
(2)获取设定参数
var res=document.getElementByID(‘resource’)
3.2 获取控件名称
因为在控件的拖放过程中,可能控件的数量不止一个,那么系统就要知道目前操作的是哪一个控件,通过名称才能得到识别。
function getNewCtrlName(){
if(preEleName=='') preEleName='field';
var subnum='';
var index=preEleName.length-1;
while(index>0){
if(nums.indexOf(preEleName.charAt(index))>=0) subnum=preEleName.charAt(index)+subnum;
else break;
index--;
}
var subcn=preEleName.substring(0,index+1);
return subcn+String(i_num);
}
3.3获取控件HTML参数行
获取控件HTML参数并形成参数行,是本文的关键技术,其能根据先前的操作所得到的数据,经过对是哪一种控件的判断,形成相应的参数行,为在屏幕上显示出对应的控件打下基础。
function getCtrlText(type,ct){//type类型:customer,system
var ret='';
var ctrlName=''; //控件名是由'field'+maxCtrlNum组合;
var styleStr='';
if(defaultWidth.value!='')styleStr='width='+defaultWidth.value+'\;';
if(defaultHeight.value!='')styleStr+='height='+defaultHeight.value+'\;';
if(styleStr!='') styleStr=' style="'+styleStr+'"';
if(type=='customer'){ //用户自定义类型
ctrlName=getNewCtrlName();
var isNew=true;
if(ct=='select'){
ret='<select name="'+ctrlName+'" '+styleStr+eventStr+'></select>';
}
}
return ret;
}
4 结束语
本文所涉及到的自动快速产生报表模板目前已经在公安部边防局的办公自动化系统中采用,在使用的过程中普遍反映良好,因为它只需要操作者反复拖放文字,再根据工作的需要进行参数大小的相应调整,而且在发布之后,全国31个单位能够在一天之内就把相应的数据上报,工作效率是显而易见的。
————————
作者简介
李伟春(1966-),男,高级工程师,硕士研究生,研究方向是系统安全、计算机系统集成。
|