在保存之前,如何检查表单中的哪些值已更改?

时间:2011-07-26 10:36:33

标签: flex model-view-controller actionscript adobe

情况是这样的。我们有一个包含大量字段的表单(超过30个分布在多个选项卡上),我想要做的是找到哪些值在保存之前已经更改,对性能的影响最小。现在发生的是,为了编辑,从几个数据库中查询单个记录。这些值作为值对象传递给客户端。目前,他们不受表格中任何字段的约束。

我最初的想法是每次更改任何字段时为每个字段设置一个布尔标志来设置true或false。在保存时,程序将运行标志列表以查看哪些字段已更改。这对我来说似乎有点笨拙,所以我想也许可以在服务器端完成。但后来我不想逐个检查每个字段,看看哪些与db记录不匹配。

关于该怎么做的任何想法?

2 个答案:

答案 0 :(得分:0)

对于许多Flex应用程序来说,这是一个非常常见的问题。因为它经常发生,所以数据管理有许多商业实现。查询存储在实体中,这些实体绑定到客户端的表单。每当更新字段时,它都会自动执行将更改保留到数据库的步骤,并在请求时执行回滚。

Adob​​e LCDS数据管理 - 如果您正在处理Java环境 WebOrb - 如果您正在处理.net,php,java,rails环境

当然你可以重新发明轮子并推出自己的轮子,在每个领域设置PropertyChangeEvent监听器。调度更改后,请监听它们并为每个更改编写处理程序。

答案 1 :(得分:0)

这听起来和我们正在为客户工作的其中一个项目做的一样。

我们所做的就是在将值对象返回UI后对其进行欺骗。然后在调用更新服务时,我发送原始对象和新对象。在服务中,我在服务器上进行字段比较,以确定应将哪些值发送到数据库。

如果您需要根据是否更改来有条件地更新每个字段/属性;那时我没有办法避免对每个字段/属性进行检查。即使你实现了你的布尔概念,只要有任何变化,就在UI中交换标志;在创建查询时,您仍然需要检查这些布尔值,以确定应该更新的内容。

在我的情况下,查询三个不同的数据库来创建发送回UI的值对象。字段更新保存在其中一个数据库中,并在执行选择时按首选顺序排列。因此,我们在存储过程中有一个明确的字段比较字段。

如果您不需要逐场比较,而是需要“按记录记录”比较;然后使用布尔方法让你知道记录/值对象已经改变,这将节省你一些时间和编码。