我有一个用于编辑事件的表单,其中用户可以(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>
这可以正常工作,但当然它会在更改数据库时保留它们;并且仅在已创建事件时才有效。理想情况下,我希望仅在 FormView 保存后保留对 ListView 的更改(因此,如果有人对 ListView 进行了一些更改,然后从 FormView 中取消,则更改将被丢弃)。同样,我希望能够一次创建一个新活动,输入其详细信息,并让一些人注册它;当 FormView 保存时,它会获取事件的新 ID,然后 ListView 使用该 ID 保存。
在过去(Linq 之前)我已经用我自己广泛定制的 FormView 和 SqlDataSource 对象完成了这一点,它们负责临时保存数据更改、从 FormView 获取事件 ID 等。有没有更标准的方法使用 LinqDataSource 处理这种情况?