0

私は次の状況にあります:

私のビジネスクラス:

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でこれを行う方法を理解できないようです。これを修正するにはどうすればよいですか?

4

1 に答える 1

0

私は解決策を見つけました:

protected void odsEditfoo_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
  Foo item = (Foo)(e.InputParameters["item"]);
}
于 2010-08-09T14:14:30.327 に答える