Обработка identity-значений при вставке

До сих пор все примеры, которые вы видели, использовали параметры для передачи значений операции обновления. Однако вы также можете создать параметр для возвращения результата. Эту опцию можно использовать с SqlDataSource, чтобы получить доступ к выходном параметру. С ObjectDataSource можно использовать эту технику для захвата возвращаемого значения. Чтобы увидеть это в действии, стоит рассмотреть метод InsertEmployee(), добавляющий запись о сотруднике и возвращающий вновь сгенерированное уникальное значение ID, как целое число:

public int InsertEmployee(EmpioyeeDetails emp)
{ ... }

Возвращенное identity-значение использовать не обязательно. Как вы уже видели, связанные элементы управления данными привязываются после подтверждения изменений, что гарантирует, что обновляемая информация всегда появляется в связанных элементах управления. Однако вы можете пожелать использовать identity для других целей — например, для отображения подтверждающего сообщения. Чтобы перехватить это identity-значение, необходимо определить параметр:

<asp:ObjectDataSource ID="sourceEmployees" runat="server"
  TypeName="DatabaseCompontent.EmployeeDB"
  DataObjectTypeName="DatabaseCamponent.EmployeeDetalls"
  SelectMethod="GetEmployees"
  InsertMethod="InsertEmployee" OnInserted="sourceEmployees_Inserted" >
  <InsertParameters>
   <asp:Parameter Direction="ReturnValue" Name="EmployeeID" Type="Int32" />
  </InsertParameters>
</asp:ObjectDataSource>

После этого вы можете получать параметр, отвечая на событие Inserted, которое происходит сразу после завершения операции вставки:

protected void sourceEmployees_Inserted(object sender,
   ObjectDataSoureeStatusEventArgs e)
{
  if (e.Exception == null)
  {
    lblConfirmation.Text = "Inserted record " + e.ReturnValue.ToString();
  }
}

Ограничения элементов управления
источниками данных

Элементы управления источниками данных в целом являются существенным новшеством для разработчиков ASP.NET. Однако вы все еще будете сталкиваться с ситуациями, когда нужно выйти за их границы или даже полностью от них отказаться. В следующем разделе мы покажем, как применять SqlDataSource и ObjectDataSource для того, чтобы справиться с распространенным требованием дизайна — дополнительными опциями в списке типа "главный-подчиненный".

предыдущая    следующая страница   оглавление

413

Hosted by uCoz