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