让用户设计一个表单及其中的字段

时间:2009-11-06 16:12:59

标签: .net vb.net winforms dynamic field

我正在开发一个应用程序,我想让用户设计一些表单并决定表单中的字段。

一个例子比一个糟糕的解释更好,所以让我举一个Microsoft CRM的例子,你作为最终用户可以通过添加或删除字段来定义表单,表单中的字段或自定义现有表单。

有没有一些标准方法可以做到这一点?,任何人都知道要使用的组件?或者使用类似的功能?

任何看法都会受到赞赏。

5 个答案:

答案 0 :(得分:4)

这不是一项微不足道的工作,有数千种方法可以实现这一目标。这取决于许多因素 - 例如您的用户是否能够“发布”他们创建的表单,用户是否可以更新他们的表单(带来表单和数据版本管理问题),您是否会提供可视化设计器,您是否会提供声明性设计语言,您如何想要存储填充到表单中的数据,是用户从有限的可用字段集中选择的字段,还是用户可以创建全新的字段等。

在一个完整的电子表单包中,您实际上是创建一个用于表单创建的可视IDE以及一个“编译器”,它可以生成用户表单的可填充的运行时实现。为了使系统有用,您还必须包括管理功能(搜索,归档,导入,导出等)。

如果您不想自己解决这些问题,那么有很多eforms个软件包。成本从免费到数万美元不等。

答案 1 :(得分:1)

这是一个非常复杂的问题,我将首先将其简化为更简单的用例,然后给出一种可能的设计方法。

使用案例:

  • 用户想要使用a设计表单 GUI。许多字段(如姓名,电子邮件, 年龄)可以输入
  • 选项(文本字段,选择器,广播 按钮)输出是您的XML表单或对象构造 应用
  • 用户选择保存的XML表单以生成新的表单对象,或使用gui选择要添加到from的新表单元素,提供表单名称和字段类型以及选择器是否为有效输入列表

设计:

  • 提供一组标准输入对象(文本字段,选择列表等)作为对象。
  • 提供一个base From对象,它是输入对象的容器,带有输入标签的映射到输入对象。
  • 提供一个单独的From View对象,用于处理表单对象的表示(如MVC的View部分)

我认为从这开始的最好方法是构建一个解析标准html表单并在应用程序中创建和对象的软件。然后由GUI显示。一旦你可以解析html表单,你知道你有所需的字段和显示它们的能力,现在你只需要创建一个gui来允许用户将元素添加到表单对象。

所有这一切,这不是一项简单的任务。在这种功能中有很多ins,很多出局,很多有什么东西。

答案 2 :(得分:0)

我建议您创建一个表单布局生成器,它将输入要显示的列,以及用于编辑它们的控件类型。然后它应该以有序的方式排列列(使用流动板或类似的东西)。可以轻松地在数据库中动态创建列。然后,用户可以在网格或类似的内容中编辑他们想要编辑的列,然后布局引擎从用户指定的列创建表单。当然,与完全免费的gui设计师(如视觉工作室本身)相比,这限制了可能性,但它也会使形式看起来很棒且很好地对齐。总而言之,这是一个很好的权衡,而且比一个完全成熟的gui设计师更容易实现。

答案 3 :(得分:-1)

在我当前的项目中,我们让用户通过存储每个用户配置来自定义他们想要在搜索表单和结果网格中看到的字段。例如,用户A希望在表单X上看到P,Q,R,每个控件都有一个Id,配置值由Id存储。可能不是很优雅,但适用于小型定制。

答案 4 :(得分:-1)

正如大家所说,这非常困难所以让我们看看标准。组成表单的标准是HTML。所以你:

让用户使用html或任何HTML设计器创建表单/字段。

在您的应用程序中嵌入IE以呈现html。

在他们的机器上旋转某种微小的网络服务器,只接受来自此表单和此表单的请求(我认为ASP MVC中的一些内容在这里会有所帮助)

当他们提交表单时,会解析“请求发布”以查看字段和值。