明確にするために、これは欠陥に関連する質問ではありません。私は、特定のビジネス要件に対する好ましいアプローチにもっと興味があります。
また、現在 SmartGWT バージョン 3.1 の LGPL エディションを使用しています。
要件は、顧客情報レコード (名前、電話番号など) を編集できることであり、その情報フォームは顧客住所に関する基本的な CRUD もサポートする必要があります。すべて同じフォームで。これまでのところ、次のオブジェクトを操作しています。
CustomerInfo - キャンバス
..SubscriptionForm - DynamicForm - サブスクリプション データソース
....AddressCanvasItem - フォームで AddressGrid をホストする
......AddressGrid - ListGrid - アドレス データソース
........AddressForm - AddressGrid で RecordComponent として呼び出されます - 読み取り専用および読み取り/書き込みモードで使用されます
これが現在機能する方法は、ユーザーが顧客のページを表示し、サブスクリプション フォームを表示することです。そのサブスクリプション フォームには、各アドレスのレコード コンポーネントを表示するグリッドがあり、それぞれに [編集] ボタンがあります。ユーザーが [編集] または [アドレスの追加] をクリックすると、ユーザーが変更を加えることができるスマート ウィンドウがポップアップ表示され、[保存] または [キャンセル] をクリックします。
編集による変更はサーバーに直接送信され、変更はサービス レイヤーを使用して保持されます。ユーザーは、アドレスを含むフォームの CustomerInfo フィールドを編集し、それらの変更を個別に保存/キャンセルすることもできます。
そして、それはすべて今働いています。
今、ユーザーが本当に望んでいることは、RecordComponents に各アドレスの DynamicForm を表示させることです。その後、[追加] をクリックすると、DynamicForm を編集できる状態で新しい行が表示されます。最初に [編集] をクリックしなくても、各アドレスを編集できます。要するに、彼らは編集のためにポップアップが必要になることを望んでいません。
理想的には、ユーザーが CustomerInfo フォームで [保存] または [キャンセル] をクリックすると、すべての住所と顧客情報フォーム フィールドに適用されます。
だから、私の質問はこれです:これを達成するための最良の方法は何ですか? ValuesManager がおそらく答えのように見えますが、この種の使用をサポートできるかどうかは明らかではありません。それとも、この種の使用には LGPL エディション以上の製品が必要ですか?
最後に、このようなことを行う方法を示すサンプルはありますか? ある時点でこれはほぼ機能していましたが、異なるデータソースに基づく複数のフォームを同時に送信する方法がわかりませんでした。その問題が、そもそも AddressForm をポップアップで読み取り/書き込みモードで使用するように駆り立てたものです。CRUD トラフィックをアトミックに保ち、当分の間、問題を回避することができました。
ありがとうございました!