イベントを編集するための単一のフォームがあり、ユーザーは (a) FormView でイベントの詳細 (タイトル、説明、日付など) を編集し、(b) 連絡先の ListView を表示および編集できます。イベントに登録しました。
これは、イベントへの連絡先の追加と削除を可能にする LinqDataSource です。
<asp:linqdatasource runat="server" id="ContactsDatasource" contexttypename="Db" tablename="ContactsCalendarEventsXtabs" autogeneratewhereclause="true" enabledelete="true" enableinsert="true">
<whereparameters>
<asp:querystringparameter name="CalendarEventID" querystringfield="id" type="Int32" />
</whereparameters>
<insertparameters>
<asp:querystringparameter name="CalendarEventID" querystringfield="id" type="Int32" />
</insertparameters>
</asp:linqdatasource>
これは正常に機能しますが、もちろん、変更が加えられたときにデータベースへの変更が保持されます。イベントがすでに作成されている場合にのみ機能します。理想的には、ListView への変更は、FormView が保存されたときにのみ保持されるようにしたいと考えています (そのため、誰かが ListView に変更を加えてから FormView をキャンセルすると、変更は破棄されます)。同じように、新しいイベントを作成し、その詳細を入力し、何人かの人を登録できるようにしたいと考えています。FormView が保存されると、イベントの新しい ID が取得され、ListView がその ID を使用して保存されます。
過去 (Linq の前) に、データの変更を一時的に保持したり、FormView からイベント ID を取得したりするなど、大幅にカスタマイズされた独自の FormView および SqlDataSource オブジェクトを使用してこれを達成しました。より標準的な方法はありますか? LinqDataSource を使用してこのシナリオを処理しますか?