私は次の状況にあります:
私のビジネスクラス:
public class Foo
{
public String A {get;set;}
public DateTime B {get;set;}
// .. and other properties like
public String Intern {get;set;}
}
そのアイテムを編集モードのDetailsViewにバインドしています。(Fooの単一のオブジェクトを含むリストをバインドします。IEnumerable<>クラスのみをDetailViewにバインドできることを思い出します)バインドはObjectDataSourceを介して行われます。
<asp:ObjectDataSource ID="odsEditfoo" runat="server"
SelectMethod="GetFooAsList"
TypeName="mynamespace.FooMethods"
DataObjectTypeName="mynamespace.Foo"
oninserting="odsEditfoo_Inserting" onupdating="odsEditfoo_Updating"
UpdateMethod="UpdateFoo">
<SelectParameters>
<asp:Parameter Name="A" Type="Int32" DefaultValue="-1" />
<asp:Parameter DefaultValue="-1" Name="type" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>
updatemethodは次のようになります
public void UpdateFoo(Foo item)
{
// save changes ...
}
DetailsViewで行われた変更は、アイテムインスタンスに存在します。残念ながら、プロパティインターンなどのすべてのプロパティを表示することはできません。アイテムはDetailViewにバインドされているので、必要なすべての情報があります。ポストバックが発生した瞬間に、表示されていないすべてのプロパティがアイテムで失われます。
LinqDataSourceから使用していた方法を探しています。ここでは、バインドされたオブジェクト(この場合はfooのインスタンス)にアクセスしてプロパティを変更できるUpdated-Eventがあります。ObjectDataSourceのUpdateing-Eventでこれを行う方法を理解できないようです。これを修正するにはどうすればよいですか?