首页 > 编程知识 正文

自定义表单实现思路,未完待续后面接什么

时间:2023-05-06 14:27:24 阅读:55690 作者:615

关于如何实现自定义表单2008年05月29日星期四11:32

自定义表单用途比较广泛,涉及办公自动化的自定义工作流程、CMS功能扩展、自定义调查。 为什么要使用自定义表格? 想想一个系统没有自定义表单功能,如何添加功能或扩展系统。 此时,界面设计器和程序员只能合作创建表单,然后编写代码来处理表单。 处理表单的代码既无聊又机械重复。 这些代码只是添加、删除、修改和插入,因此对普通程序员来说似乎太简单了。 可以想象,对于一个项目,如果客户需要的表单很多,这样的代码会有多重复。 虽然生成代码的工具较少,可以减少一些工作量,但整个系统更大,维护也不是很方便。 如果客户想要添加数据项或更改任何内容,则必须重新编译整个项目。 确实,开发自定义表单系统需要一点人力和项目时间,但有了这个平台,有助于今后的其他项目开发和系统自身的功能扩展。

上面列举了定制表单的一些优点,该怎么实现呢? 自定义表单是对上述情况进行抽象,根据表单定义自动创建/修改自定义数据表,并执行动态生成数据表操作的SQL语句。 当然,您需要知道常见的自定义表单系统包含哪些功能。 我认为可以分为表单定义管理部分、表单提示/提交部分、表单数据显示/管理部分。

表单定义管理:表单基本信息管理(表单名称、说明)、表单存储表字段管理、表单布局设计、表单数据验证定义、表单字段关联/子表单管理、表单字段管理

表单的基本信息定义相对简单。

表单存储表中的字段定义:用于表单,例如字段名称、字段类型、长度、默认值、编辑框类型、是否允许空、是否自扩展字段、组名称和是否显示在列表中编辑框的类型一般包括文本框、文本字段、复选框、单框、列表框、日期和时间选择、文件上传框等; 在此定义表单主表字段。 请注意,每个表单只面向一个表。 否则,处理多个表的SQL就不容易处理。 如果涉及主表和从表,则可以在子窗体中处理。

表单布局设计:这个步骤非常重要,很难实现。 简单的方法是创建表单模板,表单中的数据项说明、编辑框、数据验证都可以被内部变量替代,系统可以提供自动生成表单的功能,用户也可以自行修改。 当然如果能提供表单设计师就完美了,使用起来也更方便。

表单数据验证定义:定义需要验证字段的规则。 可以在正则表达式中定义验证规则。 系统内部提供了一些常用的验证规则。 在复杂的情况下,可能会比较字段之间的值。

字段关联/管理子窗体:定义表/窗体之间的相关信息,即主键外键信息。

字段编辑框行为定义:主要负责处理字段值更改时发生的其他编辑框事件,如与下拉框联动、从选定值返回值并为其他字段编辑框提供值以及隐藏其他编辑框

表单运行时呈现及提交

根据表单定义的布局和其他设置绘制表单,并一起生成用于验证和行为的JS代码。 填写表格时,首先填写主表信息,然后填写从表信息。 在多个表单之间跳转。 保存的临时表单值可以使用SESSION传递,最后一起提交。 提交时填写主表信息,返回主键值(如果存在主从站),然后写入从站表数据。

表单数据管理

可以根据字段配置信息查看和管理表单的数据列表。 这个步骤比较容易实现。

我最近参加了一个项目。 客户要求提供定制表单的功能。 主要要求是可以添加或删除表单中的字段,并可以灵活地自定义显示的表单格式。 由于客户表单可能经常更改,因此我们决定实施自定义表单功能。 首先假定以下两种自定义表单的解决方案,现在只涉及表单的显示方案。

请讨论两个方案的优劣,研究用哪个好。 我欢迎大家提出更好的解决方案。

HTML

摘要:采用HTML模板方式。 为每种样式的表单定义HTML模板; 当用户在模板中定义网页的HTML接口代码,并用特殊字符替换需要读取数据库数据的位置时,首先从数据库中检索所有相关数据,然后根据指定的模板路径使用HTML关键字在模板标注解析器中,将模板中的特殊标记替换为检索到的数据,然后查看整个HTML文档。

XML XSLT架构

摘要:使用XML描述数据,XSLT定义XML数据的显示格式。 用XSLT控制数据的显示; 查询数据库返回XML格式的数据,将XML保存到临时文件中,在XSLT中分析XML数据文件以生成HTML代码,并最终在前台显示HTML代码。

在第二种方法中,我正好有一个简单的Demo:/Files/Infinity/Demo

.rar,请直接用浏览器打开“Test.xml”文档,即可看到XML + XSLT方案的效果。
模板方案

表单项模板表(ItemTemplate):包含数据类型(按照数据类型对应到数据库中不同的表中去) 、数据长度 、UI配置信息、关联实体、关联条件等;

表单模板表(FormTemplate):包含集合items(each item为ItemTemplate)、表单名称、UI配置信息等;

 

表单项表(Item):包含template(ItemTemplate)+value等信息;

表单表(Form):包含template(FormTemplate)、录入时间等信息,items集合(each item为Item);

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。