У меня есть серия классов, которые свободно соответствуют следующему шаблону:
public class CustomerInfo {
public int Id {get; set;}
public string Name {get; set;}
}
public class CustomerTable {
public bool Insert(CustomerInfo info) { /*...*/ }
public bool Update(CustomerInfo info) { /*...*/ }
public CustomerInfo Get(int id) { /*...*/ }
/*...*/
}
После успешной вставки метод Insert устанавливает свойство Id объекта CustomerInfo, который был передан. Я использовал эти классы в нескольких местах и предпочел бы изменить их.
Сейчас я экспериментирую с написанием страницы ASP.NET для вставки и обновления записей.
В настоящее время я использую элементы управления ObjectDataSource и FormView:
<asp:ObjectDataSource
TypeName="CustomerTable"
DataObjectTypeName="CustomerInfo"
InsertMethod="Insert"
UpdateMethod="Update"
SelectMethod="Get"
/>
Я могу успешно вставлять и обновлять записи. Я хотел бы переключить режим FormView с Вставить на Редактировать после успешной вставки.
Моей первой попыткой было переключение режима в событии ItemInserted.
Это, конечно, не сработало. Я использовал QueryStringParameter для идентификатора, который, конечно, не будет установлен при вставке.
Итак, я переключился на ручное заполнение InputParameters во время события Selecting ObjectDataSource. Проблема в том, что мне нужно знать идентификатор недавно вставленной записи, которую я не могу найти хорошим способом получить.
Я понимаю, что могу получить доступ к возвращаемому значению метода Insert, и параметры out в событии ItemInserted, конечно, мой метод не возвращает id, используя любой из этих методов. Я не могу найти доступ к идентификатору или объекту CustomerInfo, который был вставлен после завершения вставки.
Лучшее, что я смог сделать, - это сохранить объект CustomerInfo в событии Inserting объекта ObjectDataSource.
Это похоже на странный способ сделать это. Я полагаю, что должен быть лучший способ сделать это, и я пну себя, когда увижу это. Есть идеи?