加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.NET中构建灵活的Web表单

发布时间:2020-12-16 03:42:23 所属栏目:asp.Net 来源:网络整理
导读:我正在使用asp.net,我需要构建一个应用程序,我们可以轻松创建表单而无需重新创建数据库,最好不要更改创建/读取/更新/删除查询.目标是允许客户创建自己的表单,包括下拉列表,文本框,复选框,甚至是与另一个简单表单(即拉伸它)的多对一关系.用户不必自己创建表单
我正在使用asp.net,我需要构建一个应用程序,我们可以轻松创建表单而无需重新创建数据库,最好不要更改创建/读取/更新/删除查询.目标是允许客户创建自己的表单,包括下拉列表,文本框,复选框,甚至是与另一个简单表单(即拉伸它)的多对一关系.用户不必自己创建表单,但每次请求/修改新表单时,我都不希望添加表,字段,查询,网页等.

2个问题:
1)如何构建灵活的数据库来执行此操作(在SQL Server中)?我可以想到两种方法:a)为每种数据类型(int,varchar(x),smalldatetime,bit等)创建一个表.这将很难创建足够的查询. b)创建包含大量额外字段和各种数据类型的表单表,以防用户需要5个整数或5个日期字段.这似乎是最简单的,但可能使用空间非常低效.

2)我如何建立表格?我考虑创建一个包含验证,数据类型,显示控件等的xml工作表作为列表.然后我将通过xml解析来动态构建表单.可能使用css来进行布局(必须是手动的,这没关系).

有更好/最好的方式吗?那里有什么我可以看到的想法吗?任何帮助深表感谢.

解决方法

这听起来像是InfoPath解决方案的潜在候选者.乍一看,它会完成你所要求的大部分/全部.

本文简要概述了如何创建基于SQL数据源的InfoPath表单.

http://office.microsoft.com/en-us/infopath-help/design-a-form-template-based-on-a-microsoft-sql-server-database-HP010086639.aspx

我已经构建了一个完全自定义的解决方案,就像你描述的那样,如果我再次这样做,我可能会选择1)第三方产品或2)更少的功能.您可以将90%的时间用于处理10%的功能集.

编辑:重新阅读您的问题,这是其他反馈.

1 – 灵活的数据结构:要记住的几件事情是性能和针对数据编写报告的能力.数据结构越通用,就越难实现(再次,从经验来讲).

与性能和报告准备情况相反,Microsoft SharePoint在通用表中使用XML片段/文档以获得最大的灵活性.我无法与SharePoint的功能争论,因此这确实可以完成工作并大大简化数据结构.如果正确完成,XML将表现良好,但大多数人会发现编写针对XML的查询更加困难.尽管XML是SQL Server的“一等公民”,但它可能会也可能不会像优化的表结构那样运行.

2 – 表单:我使用XSLT转换的XML实现了自定义表单. XML通常是存储表单结构的好选择; XSLT本身就是一个怪物,但它非常强大.对于它的价值,InfoPath将其表单结构存储为XML.

我还在.Net中使用自定义控件实现了动态表单.这是一种非常面向对象的方法,但(取决于UI的复杂性)可能需要大量代码.

最后(再次使用SharePoint作为示例),Microsoft在SharePoint 2007中实现了非常复杂的XML列表/表单定义.复杂性失败了许多好处.换句话说,如果你采用XML路线,让你的结构干净简单,否则你的手上会有一个维护噩梦.

编辑#2:参考下面的Scott问题,这里是一个高级数据结构,它将避免重复数据,并且不依赖于XML来完成大部分表单定义.

警告:我只是将这个设计放在SQL Management Studio中……我只用了10分钟;开发灵活的表单系统并不是一项简单的任务,因此这是一种过度简化.它不涉及用户输入数据的存储,只涉及表单的定义.

表格:

表单 – 顶级表单表,其中包含(如您所猜)组成表单的字段集合.

字段 – 可以跨表单重用的通用字段.例如,您不希望为50种不同的表单添加50个不同的“姓氏”字段.请注意“DataTypeId”列.您可以在此列中存储您想要的任何类型,例如“数字”,“自由文本”,甚至是指示用户应从列表中选择的值.

FormField – 允许表单在其定义中包含0多个字段.您甚至可以扩展此表以指示用户可以根据需要添加此字段的多个.

约束 – 基本上是一个定义约束类型的查找表(可能是最大长度,最大出现次数,要求等)

FormFieldConstraint – 将约束与表单字段的特定实例相关联.此表将特定表单与具有特定约束的特定字段组合在一起.注意元数据列;这可能是XML用于存储约束细节的一个很好的用途.

基本上,我建议构建一个规范化的数据库,其中很少或没有空值,也没有重复的数据.我所描述的结构将帮助您实现该目标.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读