需要明确的是,这不是与缺陷相关的问题。我对特定业务需求的首选方法更感兴趣。
此外,我们目前正在使用 SmartGWT 3.1 版的 LGPL 版。
我们的要求是能够编辑客户信息记录(姓名、电话号码等),并且该信息表单还需要支持围绕客户地址的基本 CRUD;都在同一张表格上。到目前为止,我们已经使用了以下对象:
客户信息 - 画布
..SubscriptionForm - DynamicForm - 订阅数据源
....AddressCanvasItem - 在表单中托管 AddressGrid
......AddressGrid - ListGrid - 地址数据源
........AddressForm - 在 AddressGrid 中作为 RecordComponent 调用 - 用于只读和读写模式
现在的工作方式是用户为客户打开页面,显示他们的订阅表单,在该订阅表单上是一个网格,显示每个地址的记录组件,每个地址都有一个编辑按钮。用户单击编辑或添加地址,我们会弹出一个智能窗口,用户可以在其中进行更改,单击保存或取消。
然后将编辑中的更改直接提交到服务器,并使用服务层持久保存更改。用户还可以编辑包含地址的表单上的 CustomerInfo 字段并单独保存/取消这些更改。
现在一切正常。
现在用户真正想要的,我只是不知道如何让它在第一次工作,是让 RecordComponents 为每个地址显示一个 DynamicForm。然后,当他们单击“添加”时,它将弹出一个新行,DynamicForm 已准备好进行编辑。他们将能够编辑每个地址,而无需先单击编辑。简而言之,他们不希望编辑需要弹出窗口。
理想情况下,当用户在 CustomerInfo 表单上单击 Save 或 Cancel 时,它将应用于所有地址以及客户信息表单字段。
所以,我的问题是:实现这一目标的最佳方法是什么?ValuesManager 似乎可能是答案,但我不清楚它是否可以支持这种使用。或者,这种用法是否需要 LGPL 版本以外的产品?
最后,是否有示例显示如何执行此类操作?我确实在某一时刻非常接近工作,但我没有看到如何让不同数据源支持的多个表单同时提交。这个问题是促使我首先在弹出窗口中以读写模式使用 AddressForm 的原因。它使 CRUD 流量保持原子性,暂时让我解决了这个问题。
谢谢!