表单页面数据处理方法和装置技术领域
本公开涉及网络技术,尤其涉及一种表单页面数据处理方法和装置。
背景技术
表单页面是构建应用的一种基本组件,用户可以通过表单页面向应用的
数据库提交新增或修改的数据,例如,网站注册页面是一种表单页面,用户
可以在该页面中输入账号、密码等注册数据,并提交至数据库存储。表单页
面中可以包括多种类型的控件,可以通过控件接收用户输入的数据,并且通
过控件与数据库进行数据交互,比如加载数据库中的数据至控件,或将控件
的数据传输至数据库。可以将这种表单页面获取数据并与数据库交互的过程
称为表单页面的数据处理。
相关技术中,要实现上述的表单页面数据处理,需要修改页面中各个控
件的操作状态,加载数据库中的数据至页面控件,或者将控件获取的数据更
新至数据库等。在开发表单页面时,分别对每一个控件编码执行上述相关操
作的代码;当一个应用包括多个表单页面,每个表单页面包括多个控件时,
编码的工作量将很大,开发效率较低。
发明内容
为克服相关技术中存在的问题,本公开提供一种表单页面数据处理方法
和装置,该方法可以提高表单页面的开发效率。
根据本公开实施例的第一方面,提供一种表单页面数据处理方法,包括:
在表单页面进行数据操作时,执行不同类型的页面控件处理;
对于其中一种类型的页面控件处理,调用所述类型的页面控件处理对应
的控件处理方法,所述控件处理方法包括:遍历表单页面中的所有控件,对
于每一个控件,根据所述控件的控件信息,执行所述控件信息对应的控件数
据处理。
根据本公开实施例的第二方面,提供一种表单页面数据处理装置,包括:
方法调用模块,用于在表单页面进行数据操作时,执行不同类型的页面
控件处理;对于其中一种类型的页面控件处理,调用所述类型的页面控件处
理对应的控件处理方法;
页面处理模块,用于遍历表单页面中的所有控件,对于每一个控件,根
据所述控件的控件信息,执行所述控件信息对应的控件数据处理。
本公开的实施例提供的技术方案可以包括以下有益效果:通过使用一种
控件处理方法,在遍历表单页面各个控件的过程中,执行控件信息对应的控
件数据处理,简化了表单页面数据处理的开发方式,使得以较少的代码量实
现对页面数据的处理,提高了表单页面的开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性
的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明
的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的表单页面的显示示意图;
图2是根据一示例性实施例示出的表单页面中的控件与数据库关系示意;
图3是根据一示例性实施例示出的一种表单页面数据处理方法的流程;
图4是根据一示例性实施例示出的另一种表单页面数据处理方法的流程;
图5是根据一示例性实施例示出的又一种表单页面数据处理方法的流程;
图6是根据一示例性实施例示出的又一种表单页面数据处理方法的流程;
图7是根据一示例性实施例示出的又一种表单页面数据处理方法的流程;
图8是根据一示例性实施例示出的一种表单页面数据处理装置的结构;
图9是根据一示例性实施例示出的另一种表单页面数据处理装置的结构;
图10是根据一示例性实施例示出的又一种表单页面数据处理装置的结构。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的
描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的
要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所
有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一
些方面相一致的装置和方法的例子。
表单页面是一个网站和该网站的用户开展互动的窗口,用户可以通过表
单页面填写信息,提交至网站的服务器。参见图1的示例,在显示设备11(例
如,可以是一个计算机)的显示屏12上,显示了一个表单页面,该表单页面
可以是一个注册页面,用户可以在该注册页面中填写自己的信息(如,用户
名、密码、地址等)。在表单页面填写信息后,该表单页面可以将这些信息
发送至服务器13,存储在服务器13中的数据库14中。
在本例子中,表单页面的数据(例如,图1中用户输入的姓名、地址等
信息)在向数据库14中存储时,可以采用如下的存储方式:参见图2的示例,
数据库14中可以有很多数据库表,可以设置一个数据库表对应存储一个表单
页面的数据。如图2所示,表单页面中包括很多控件,例如,表单页面21
包括用于获取姓名、密码、住址的三个控件,这些控件可以是TextBox输入
框,供用户输入信息;具体实施中还可以包括其他类型的控件,比如CheckBox
选择框,供用户选择信息,或者还可以是DropDownList下拉框等控件。
而在数据库14中可以包括一个对应存储该表单页面21中的各个控件接
收数据的数据库表22,该数据库表22中可以包括很多字段,而这些字段可
以对应存储某个控件的数据,比如,字段1可以用于存储表单页面21中的第
一个TextBox输入框获取到的姓名数据,字段2可以用于存储表单页面21
中的第二个TextBox输入框获取到的密码数据等。如果将某一次的表单页面
21各个控件获取到的数据均传输至数据库表22存储,那么对应本次数据的
各个字段的数据整体可以称为一个数据记录,如果将其中一个字段设为数据
库表的主键(例如,将具有唯一性的姓名字段设为主键),可以查询到某一
个数据记录,如果将数据库表的数据加载至表单页面,可以将数据记录整体
加载,即将数据记录中的各个字段分别加载到对应的控件中。
本例子中所提供的表单页面数据处理方法,将用于实现表单页面与数据
库之间的数据交互。比如,有个新用户在网站注册,那么将通过表单页面向
数据库中新增一条数据记录;或者用户还可以修改自己原来注册的信息,那
么数据库可以将用户之前的数据记录加载到表单页面供用户修改,修改后再
更新存储至数据库。在这种对表单页面数据的新增、修改等数据操作中,需
要执行到如下几个操作,这些操作可以称为不同类型的页面控件处理:
1)更新控件的数据初始值;
例如,当一个新用户在网站注册时,供用户填写信息的TextBox输入框
要设置为空值,而有些输入框可能默认值是1。
2)设置控件的数据操作状态;
例如,不论用户要新注册信息,或者是要修改原有的信息,各个控件的
数据操作状态都要设置为“可编辑”,而当用户填写信息结束时,还要将表
单页面中的控件的数据操作状态设置为“不可编辑”。
3)将数据库表中的数据记录加载至表单页面;
例如,当用户要修改原来填写的信息时,要查询到该用户的数据记录,
并将数据记录的各字段的数据加载至表单页面的各个控件中,以供用户修改
该数据。
4)表单页面的数据更新至数据库;
例如,不论用户要新注册信息,或者是要修改原有的信息,填写信息完
毕后,这些信息都要上传至数据库存储。
通过上述列举的几种不同类型的页面控件处理,可以实现表单页面的数
据操作,比如,对表单页面数据的新增或修改。而传统方式中,每种类型的
页面控件处理,都是各个控件独自设置,比如,以控件的数据操作状态设置
为例,设置TextBox 1,通过代码TextBox 1.ReadOnly=true,如果要设置
TextBox,还通过代码TextBox 2.ReadOnly=true,等。即各个控件分别进行
相应处理代码的编写,这种方式如果一个表单页面有N个控件就要写N次,
开发效率较低,而且代码量较大。因此,本例子中提供的表单页面数据处理
方法,即为要简化表单页面数据处理的开发方式,使得以较少的代码量实现
对页面数据的处理,提高表单页面的开发效率。
参见图3示例的本申请的表单页面数据处理方法,可以包括:
301、在表单页面进行数据操作时,执行不同类型的页面控件处理。
302、对于其中一种类型的页面控件处理,调用该类型的页面控件处理对
应的控件处理方法,该控件处理方法包括:遍历表单页面中的所有控件,对
于每一个控件,根据控件的控件信息执行控件信息对应的控件数据处理。
由该流程可以看到,在执行其中一种类型的页面控件处理时,不用再分
别对各个控件进行设置,而是通过调用一个控件处理方法来执行所有控件的
设置。该控件处理方法就可以遍历表单页面中的所有控件,并在遍历的过程
中根据控件信息执行对该控件的处理,如下分别对上面提到的四种页面控件
处理,说明如何对页面控件进行设置。
首先,本例子中可以通过命名规则,将表单页面上的控件与数据库表中
的各个字段建立关联。
例如,数据库表中的字段的字段名,可以使用字母和数字的方式命名,
如,column1/colunmn2/colunmn3等,并设置表主键。
对于表单页面的命名,可以设置为控件类别和数据库表的字段名的组合,
该字段名对应的字段是用于存储控件数据的字段。比如,假设column1的字
段存储TextBox输入框中的数据,colunmn2的字段用于存储CheckBox选择
框的数据,那么TextBox输入框这个控件的控件名称可以是txt_column1,
CheckBox选择框这个控件的控件名称可以是chk_colunmn2。其中,控件类
别和字段名之间的间隔符,也可以是下划线之外的其他符号,比如,中划线。
经过如上设置,表单页面上的控件与数据库表中的各个字段之间具有了
关联,通过控件名称就可以知道对应存储该控件数据的字段是哪个。本例子
中,在遍历表单页面中的各个控件时,可以根据控件名称执行对应该控件的
数据处理。为实现该方法,使用Form为主控件,可任意命名,比如该主控
件的id=mainform,将表单页面的所有控件设置为该Form的子控件。
1)更新控件的数据初始值;
该处理可以通过调用控件处理方法ClearControlData(mainform)实现。
该方法ClearControlData(mainform)限定的流程可以包括:遍历表单页面
中的所有控件,即mainform下的所有子控件,对于每个控件,根据控件名称
中的控件类别,设置对应控件类别的控件数据初始值。例如,当一个新用户
在网站注册时,供用户填写信息的TextBox输入框要设置为空值,而有些输
入框可能默认值是1,不同类别的控件其初始值可能不同。
2)设置控件的数据操作状态;
该处理可以通过调用控件处理方法LockControlStatus(mainform,status)实
现。该方法LockControlStatus(mainform,status)限定的流程可以包括:遍历表
单页面中的所有控件,即mainform下的所有子控件,对于每个控件,根据控
件名称中的控件类别,设置对应控件类别的控件数据操作状态即状态控制值
status,通过设置状态控制值status就可以控制控件的数据操作状态。
例如,有的时候TextBox输入框设置为ReadOnly属性,该ReadOnly属
性即该控件TextBox输入框的状态控制值status。DropDownBox下拉框设置
Enable属性,该Enable属性即该控件的状态控制值status。
3)将数据库表中的数据记录加载至表单页面;
该处理可以根据控件名称中的字段名,将待加载至表单页面的数据记录
中对应字段名的数据赋值给所述控件。例如,遍历mainform下的所有子控件,
获取各个子控件的控件名称中的分隔符(如,下划线_)右端的字段名(如,
column1),将用于加载至该表单页面的数据记录中对应该字段名的字段数据
(如,column1对应的字段中的数据)赋值给该控件即可。
4)表单页面的数据更新至数据库;
该处理可以根据控件名称中的字段名,将控件的数据和字段名,携带在
数据库更新语句中,并执行数据库更新语句,将控件的数据更新至数据库表
中对应该字段名的字段。例如,遍历mainform下的所有子控件,主键控件除
外,获取各个子控件的控件名称中的分隔符(如,下划线_)右端的字段名(如,
column1),将该控件的数据和该字段名column1拼接在数据库更新语句例如
updata语句或insert语句中,执行该语句后,控件的数据就对应更新数据库
表column1字段的数据。
本例子中,为了确保向数据库更新数据时生成的SQL语句中的字段名的
正确性,避免SQL执行出错,还可以在上面的第3)种页面控件处理和第4)
种页面控件处理中,向数据库更新数据之前进行字段名的校验。比如,将表
单页面对应的数据库表中的各个字段名存储成字段名列表,判断某个控件的
控件名称中的字段名是否包含在该列表中,若包含才向数据库表更新该控件
的数据,该控件的数据将对应更新数据库表中相同字段名的字段。图4示例
了第3)种页面控件处理的一种执行流程,图5示例了第4)种页面控件处理
的一种执行流程。
如图4所示,在将数据库表的数据记录加载至表单页面时,可以调用方
法SelectControlData(mainform,TableName,PrimaryKey),该方法的流程包括:
401、根据表单页面对应的数据库表TableName,查询出该表所有字段名。
402、将数据库表的所有字段名存储在一个字段名列表columnlist中。
403、在数据库表TableName中根据主键PrimaryKey,查询出一条数据
记录,将这条数据记录存储在DataSet中。比如,假设某个用户要修改自己
注册的信息,可以使用具有唯一性的用户账号作为主键,查询到该用户的信
息,加载到表单页面供用户修改。
404、遍历mainform下的所有子控件,获取各个子控件名称中分隔符右
侧的字段名。
405、检查控件名称的分隔符右侧的字段名是否包含在字段名列表
columnlist中。
若确定该字段名包含在columnlist中,则执行406,将已经存储在DataSet
中的数据记录中的该字段名对应的数据赋值给该子控件。否则,表明该控件
的数据并没有在DataSet的数据记录中,不能赋值。
如图5所示,在将数据库表的数据记录加载至表单页面时,可以调用方
法SavaControlData(mainform,TableName,PrimaryKey),该方法的流程包括:
501、根据表单页面对应的数据库表TableName,查询出该表所有字段名。
502、将数据库表的所有字段名存储在一个字段名列表columnlist中。
503、检查数据库表主键PrimaryKey对应的控件值,如果是空值,则执
行504,发起insert操作;否则,执行505,发起update操作。
504、insert操作:遍历mainform下的所有子控件,主键控件除外,获取
各个子控件名称中分隔符右侧的字段名,若该字段名包含在columnlist中,
则拼接insert语句中的字段名和字段值,即该控件的数据和该字段名拼接在
数据库更新语句insert语句中。否则,不在insert语句拼接。
505、update操作:遍历mainform下的所有子控件,主键控件除外,获
取各个子控件名称中分隔符右侧的字段名,若该字段名包含在columnlist中,
则拼接update语句中的字段名和字段值,即该控件的数据和该字段名拼接在
数据库更新语句update语句中。否则,不在update语句拼接。
506、执行数据库更新语句,例如,update语句或insert语句。执行该语
句后,控件的数据就对应更新数据库表中该字段名对应字段。
如下再分别以在表单页面新增数据或修改数据为例,说明本申请的表单
页面数据处理方法的应用。其中,在如下例子中涉及到的各个方法可以参见
前面的实施例,不再详述。
图6示例了在表单页面新增数据的处理流程,可以包括:
601、通过调用方法ClearControlData(mainform),将表单页面中的各个
控件的数据设置为数据初始值。
602、通过调用方法LockControlStatus(mainform,status),将表单页面中
的各个控件的数据操作状态设置为可编辑。
603、表单页面的各个控件,接收用户设置的新增数据。
604、通过调用方法SavaControlData(mainform,TableName,PrimaryKey),
将表单页面中各个控件收到的数据保存至数据库表中。
605、通过调用方法LockControlStatus(mainform,status),将表单页面中
的各个控件的数据操作状态设置为不可编辑。
图7示例了在表单页面修改数据的处理流程,可以包括:
701、通过调用方法SelectControlData(mainform,TableName,PrimaryKey),
将对应该表单页面的数据库表中获取数据记录,并将数据记录中的数据加载
至表单页面的各个控件。
702、通过调用方法LockControlStatus(mainform,status),将表单页面中
的各个控件的数据操作状态设置为可编辑。
703、表单页面的各个控件,接收用户设置的修改数据。
704、通过调用方法SavaControlData(mainform,TableName,PrimaryKey),
将表单页面中各个控件收到的数据保存至数据库表中。
705、通过调用方法LockControlStatus(mainform,status),将表单页面中
的各个控件的数据操作状态设置为不可编辑。
在本申请的例子中,表单页面可以是ASP.NET的单个aspx页面,该页
面的编码可以采用C#或vb实现,上述的例子中以C#举例实现。用于存储表
单页面数据的数据库可以支持主流数据库,例如本申请中以SQLServer实现。
为了实现上述的表单页面数据处理方法,本申请还提供一种表单页面数
据处理装置,该装置可以是开发的表单页面的各个逻辑功能模块,如图8所
示,该装置可以包括:方法调用模块81和页面处理模块82。
方法调用模块81,用于在表单页面进行数据操作时,执行不同类型的页
面控件处理;对于其中一种类型的页面控件处理,调用所述类型的页面控件
处理对应的控件处理方法;
页面处理模块82,用于遍历表单页面中的所有控件,对于每一个控件,
根据所述控件的控件信息,执行所述控件信息对应的控件数据处理。
例如,所述控件信息是控件名称;所述控件名称包括:所述控件的控件
类别、以及用于对应存储所述控件的控件数据的数据库表的字段名。
在一个例子中,参见图9,页面处理模块82可以包括:
控件遍历子模块821,用于遍历表单页面中的所有控件。
初值设置子模块822,用于对于每一个控件,根据所述控件名称中的控
件类别,设置对应所述控件类别的控件数据初始值。
状态设置子模块823,用于对于每一个控件,根据所述控件名称中的控
件类别,设置对应所述控件类别的控件数据操作状态。
数据加载子模块824,用于对于每一个控件,根据控件名称中的字段名,
将待加载至表单页面的数据记录中对应所述字段名的数据赋值给所述控件。
数据更新子模块825,用于对于每一个控件,根据所述控件名称中的字
段名,将所述控件的数据和字段名,携带在数据库更新语句中;执行数据库
更新语句,以将所述控件的数据更新至数据库表中对应所述字段名的字段。
上述的初值设置子模块822至数据更新子模块825,可以分别独自和控
件遍历子模块821存在,或者,也可以任意组合与控件遍历子模块821存在。
例如,当这些模块独自和控件遍历子模块821存在时,可以是在开发表单页
面时部分功能的开发(比如,控件的数据操作状态的设置)通过调用本例子
中的相应方法实现,相对于传统方式中的所有功能都分别各个控件独自设置,
也减少了代码量,而这些模块全部与控件遍历子模块821存在时,可以是图
6或图7的例子,可以最大程度的减少代码量。
在又一个例子中,参见图10,为了确保向数据库更新数据时生成的SQL
语句中的字段名的正确性,页面处理模块82还可以包括:
列表生成子模块826,用于将所述表单页面对应的数据库表中的各字段
名,存储成字段名列表;
字段校验子模块827,用于判断所述控件名称中的字段名是否包含在所
述字段名列表中,若判断结果为是,则执行控件信息对应的控件数据处理。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本
发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性
变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公
开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被
视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确
结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所
附的权利要求来限制。