Как изменить свойства класса в событии обновления ObjectDataSource, когда метод обновления принимает бизнес-класс в качестве параметра? - PullRequest
0 голосов
/ 09 августа 2010

У меня следующая ситуация:

Мой бизнес-класс:

public class Foo
{
 public String A {get;set;}
 public DateTime B {get;set;}
 // .. and other properties like
 public String Intern {get;set;}
}

Я связываю этот элемент с DetailsView в режиме редактирования.(Я связываю List, содержащий единственный объект 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>

Метод обновления выглядит как1009 *

public void UpdateFoo(Foo item) 
{
   // save changes ...
}

Изменения, сделанные в DetailsView, присутствуют в экземпляре элемента.К сожалению, я не могу отобразить все свойства, такие как свойство Intern.Поскольку элемент привязан к DetailView, у меня есть вся необходимая информация.Все не отображаемые свойства теряются в элементе в тот момент, когда происходит обратная передача.

Я ищу способ, которым я привык, из LinqDataSource, где у меня есть событие обновления, которое позволяет мне получить доступ ксвязанный объект, в данном случае экземпляр foo, для изменения свойств.Я не могу понять, как это сделать в Updating-Event ObjectDataSource.Что я должен сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 09 августа 2010

Я нашел решение:

protected void odsEditfoo_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
  Foo item = (Foo)(e.InputParameters["item"]);
}
...