一种基于表单自适应展示和更新服务端数据的方法
技术领域
本发明涉及各类信息系统的开发中的数据展示和更新领域,尤其涉及C#语言、Asp.net表单+关系型数据库的表单操纵和数据更新领域,提供一种基于表单自适应展示和更新服务端数据的方法。
背景技术
随着C#语言类库的不断升级,正在改变着很多常规ERP软件的开发模式和开发效率,目前,教育行业的各环节信息化建设和升级仍是方兴未艾,近年来随着对软件使用的深入,用户对软件系统的要求也越来越高,各软件厂家持续对自身产品进行架构调整、代码重构已成为常态,只有不断革新功能、增加易用性、稳定性才能留住用户,这其中都需要不断投入大量人力和时间,近几年开发人员紧缺、价码不断提高也是常态。而各类业务系统,对数据表单查询显示、修改、更新等操作通常是为最常用、最基本的功能,这类功能的开发,也占据了开发人员很大比例的时间。
现状:典型的现状是写代码对应数据项逐项取值展示,保存时再重新逐项获取当前值进行保存,代码量非常大而且机械重复,而且容易出差错,需要很多的测试才能保证较好的正确性;
发明内容
本发明提供了一种基于表单自适应展示和更新服务端数据的方法。本发明是一种从减少人工编写代码、降低开发人员机械劳动的角度出发,提出了一种系统方法,实现了实现了一种代码简洁,性能理想,易于适应需求变化的一种高效开发组件。
本发明解决其技术问题所采用的技术方案如下:
步骤1、在页面端设计一套表单中各类常用控件的ID命名规则和检测规则,具体实现如下:
ID命名规则:将控件类别、该控件显示的数据对应的数据表的字段名、字段的数据类型,按规则组合成一个英文字符串作为控件ID;
所述的控件ID表现形式为A+B;其中A表示控件类型,包括字符文本框txd、整数文本框Txn、日期文本框Txd、整数下拉框Ddl、复选框Ckb和只读的文本框Lbl;B表示字段名;具体参看表1。
检测规则:对每个输入控件允许输入的数据类型type、数据能否为空isnull和异常情况提示语进行设置;
表1:各种类型编码如下表所示:
控件ID编码规则 |
识别的 |
|
Txt+字段名 |
文本框,字符型 |
|
Txn+字段名 |
文本框,整数型 |
|
Txd+字段名 |
文本框,日期型 |
|
Ddl+字段名 |
下拉框,整数型 |
|
Ckb+字段名 |
复选框,布尔型 |
Ture/false |
Lbl+字段名 |
只读的文本框,字符型 |
|
步骤2、在页面端设计一个通用js(javascript)检测函数,js检测函数对以步骤1的ID命名规则和检测规则定义的表单中的数据进行检测,具体的:
js检测函数对表单中数据的数据类型和数据能否为空isnull进行检测,若出现异常,则出现异常情况提示语;通过js检测函数检测的表单中的数据添加操作状态标记后,直接提交到服务端。
所述的操作状态标记包括新增、删除、更新。
步骤3、在服务端设计有一个表单控件的扫描函数,具体实现如下:
首先,扫描函数对存储在服务端的表单中的控件ID进行提取;其次,扫描函数对提取的控件ID根据ID命名规则进行拆分,从而获取数据类型和数据字段名;将控件ID和控件ID对应的值放在哈希表中;
所述的控件ID对应的值是控件ID上填写的真实数据。
所述的哈希表有两列,其中键key用于存储控件ID;值value用于存储控件ID对应的值;
步骤4、通过AutoGet()收集器解析哈希表中的数据,然后将解析的数据添加原有操作状态后,调用保存函数存储。
所述的AutoGet()收集器具体实现如下:
通过哈希表中键key存放的控件ID,解析哈希表中所有控件ID中的字段名;将哈希表中所有字段名以及字段名对应的值组合为一条记录,同时在该记录中添加原有的操作状态标记和目标存储数据表的名称,组合成新的记录Ⅰ;
所述的目标存储数据表可以是多个。
所述的保存函数具体实现如下:
对目标存储数据表中的字段名进行查询,将获取的所有字段名与记录Ⅰ中的所有字段名进行匹配,从记录Ⅰ中获取将与目标存储数据表中的字段名以及字段名对应的值,去除冗余值;然后根据记录Ⅰ中的操作状态标记对获取的数据在目标存储数据表中进行操作。
步骤5、当页面端需要加载表单时,具体实现如下:
4-1.服务端将要输出至页面端的数据记录datarow,首先通过AutoSet()函数解析成哈希表形式,
具体:通过服务端将的扫描函数扫描页面端所有控件ID,根据控件ID在服务端生成空置的哈希表,根据数据记录datarow中所有字段名以及字段名对应的值AutoSet()函数填充哈希表。
所述的AutoSet()函数实现如下:
将数据记录datarow中的每一个字段名以及该字段名对应的值提取出来,然后将提取的字段名与哈希表中的控件ID相匹配,将匹配到的字段名对应的值填充到该控件ID对应的值,完成显示。
本发明有意效果如下:
本发明能够去除冗余属性,实现精准保存;本组件支持表单上显示的数据可以是多个表关联查询的数据(真实用户需求经常如此),而保存时既可以保存多张表的数据,也可以只保存特定表的数据,适应性很好;
本发明在需求变更频繁,或在业务软件的初期开发中,对于数据库设计经常改变的情况时,系统只需要前端工程师增减一下表单页面的输入项,后台就能自动完成数据的增删改操作了。相比传统开发方式能够减少开发人员编写这些字段的赋值代码,减少人工编码,并能有效降低测试工作量。
本发明在富表单项目中,应用本技术可以快速的完成各种定制,只要修改页面端和数据库端,中间环节均可由扫描器自动完成。可很大程度上节省程序开发人员的工作量。
具体实施方案
本发明的具体实施方案入如下:
一种基于表单自适应展示和更新服务端数据的方法,具体实现步骤如下:
步骤1、在页面端设计一套表单中各类常用控件的ID命名规则和检测规则,具体实现如下:
ID命名规则:将控件类别、该控件显示的数据对应的数据表的字段名、字段的数据类型,按规则组合成一个英文字符串作为控件ID;
所述的控件ID表现形式为A+B;其中A表示控件类型,包括字符文本框txd、整数文本框Txn、日期文本框Txd、整数下拉框Ddl、复选框Ckb和只读的文本框Lbl;B表示字段名;具体参看表1。
例如:英文字符串表现形式为txd+limitdt,前三位txd代表这是一个文本框且是日期类型,并对应数据表中的limitdt字段;英文字符串表现形式为Ddl+dept,前三位Ddl代表这是个下拉选择框,对应数据表中的dept字段。
检测规则:对每个输入控件允许输入的数据类型type、数据能否为空isnull和异常情况提示语进行设置;
表1:各种类型编码如下表所示:
控件ID编码规则 |
识别的 |
|
Txt+字段名 |
文本框,字符型 |
|
Txn+字段名 |
文本框,整数型 |
|
Txd+字段名 |
文本框,日期型 |
|
Ddl+字段名 |
下拉框,整数型 |
|
Ckb+字段名 |
复选框,布尔型 |
Ture/false |
Lbl+字段名 |
只读的文本框,字符型 |
|
步骤2、在页面端设计一个通用js(javascript)检测函数,js检测函数对以步骤1的ID命名规则和检测规则定义的表单中的数据进行检测,具体的:
js检测函数对表单中数据的数据类型和数据能否为空isnull进行检测,若出现异常,则出现异常情况提示语;通过js检测函数检测的表单中的数据添加操作状态标记后,直接提交到服务端。
所述的操作状态标记包括新增、删除、更新。
步骤3、在服务端设计有一个表单控件的扫描函数,具体实现如下:
首先,扫描函数对存储在服务端的表单中的控件ID进行提取;其次,扫描函数对提取的控件ID根据ID命名规则进行拆分,从而获取数据类型和数据字段名;将控件ID和控件ID对应的值放在哈希表中;
所述的控件ID对应的值是控件ID上填写的真实数据。
所述的哈希表有两列,其中键key用于存储控件ID;值value用于存储控件ID对应的值;
步骤4、通过AutoGet()收集器解析哈希表中的数据,然后将解析的数据添加原有操作状态后,调用保存函数存储。
所述的AutoGet()收集器具体实现如下:
通过哈希表中键key存放的控件ID,解析哈希表中所有控件ID中的字段名;将哈希表中所有字段名以及字段名对应的值组合为一条记录,同时在该记录中添加原有的操作状态标记和目标存储数据表的名称,组合成新的记录Ⅰ;
所述的目标存储数据表可以是多个。
所述的保存函数具体实现如下:
对目标存储数据表中的字段名进行查询,将获取的所有字段名与记录Ⅰ中的所有字段名进行匹配,从记录Ⅰ中获取将与目标存储数据表中的字段名以及字段名对应的值,去除冗余值;然后根据记录Ⅰ中的操作状态标记对获取的数据在目标存储数据表中进行操作。
步骤5、当页面端需要加载表单时,具体实现如下:
4-1.服务端将要输出至页面端的数据记录datarow,首先通过AutoSet()函数解析成哈希表形式,
具体:通过服务端将的扫描函数扫描页面端所有控件ID,根据控件ID在服务端生成空置的哈希表,根据数据记录datarow中所有字段名以及字段名对应的值AutoSet()函数填充哈希表。
所述的AutoSet()函数实现如下:
将数据记录datarow中的每一个字段名以及该字段名对应的值提取出来,然后将提取的字段名与哈希表中的控件ID相匹配,将匹配到的字段名对应的值填充到该控件ID对应的值,完成显示。