Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0 - Вставка данных при помощи формы, созданной вручную

ОГЛАВЛЕНИЕ


Вставка данных при помощи формы, созданной вручную

Примеры, доступные в конце данной статьи, демонстрируют различные техники вставки данных в таблицу Products базы данных Northwind. Таблица Products содержит несколько колонок. Каждая запись товара определена уникальным ProductID, который является колонкой типа AutoNumber/IDENTITY. При вставке записи в таблицу единственными двумя колонками, которые необходимы, являются ProductName и Discontinued; все другие колонки допускают нулевое значение (NULL).

Представьте, что нам необходимо создать страницу, которая позволяла бы пользователям добавлять новые записи в таблицу Products посредством указания названия, категории, цены и статуса скидки. Мы смогли создать простую форму, которая включает в себя TextBoxes, один DropDownList и элемент CheckBox для сбора входной информации полей, а также элемент управления Button названный "Add Product", при нажатии на который в базу данных будет вставлена запись нового товара.

В дополнение к данным элементам управления пользовательского ввода мы также можем добавить элемент управления SqlDataSource для обработки вставки. Мы можем настроить InsertCommand элемента в следующее выражение INSERT:

INSERT INTO Products(ProductName, CategoryID, UnitPrice, Discontinued)
VALUES (@ProductName, @CategoryID, @UnitPrice, @Discontinued)

Заметьте, что мы использовали параметры после ключевого слова VALUES. Источниками для значений этих параметров являются элементами управления пользовательского ввода на странице. Установите соответствие между значениями данных параметров в наборе InsertParameters при помощи ControlParameters, которые указывают на соответствующие элементы управления на странице. Существует несколько путей реализации этого. Находясь в режиме дизайнера (Designer) нажмите на SqlDataSource и перейдите к окну свойств (Properties). Там вы увидите опцию InsertQuery, которая будучи отмеченной, отображает редактор команд и параметров (Command and Parameter Editor), как это продемонстрировано ниже. Здесь вы можете указать InsertCommand, параметры, и их источники. Заметьте, что каждый из четырех параметров использует элемент управления (Control) в качестве источника (Parameter source), при этом ControlID выпадающего списка установлен в соответствующий элемент управления на странице.


В качестве альтернативы данные параметры могут быть указаны посредством декларативного синтаксиса элемента управления SqlDataSource:

<asp:SqlDataSource ID="AddProductDataSource" runat="server" ConnectionString="..."
      InsertCommand="INSERT INTO Products(ProductName, CategoryID, UnitPrice, Discontinued) VALUES (@ProductName, @CategoryID, @UnitPrice, @Discontinued)"
      ProviderName="...">
   <InsertParameters>
      <asp:ControlParameter ControlID="ProductName" Name="ProductName" PropertyName="Text" />
      <asp:ControlParameter ControlID="Categories" Name="CategoryID" PropertyName="SelectedValue" />
      <asp:ControlParameter ControlID="UnitPrice" Name="UnitPrice" PropertyName="Text" />
      <asp:ControlParameter ControlID="Discontinued" Name="Discontinued" PropertyName="Checked" />
   </InsertParameters>
</asp:SqlDataSource>

В любом событии, как только элементы управления будут добавлены на страницу InsertCommand и InsertParameters элемента SqlDataSource будут правильно настроены, вставка новой записи будет настолько же  проста, как  и вызов метода Insert() элемента управления источником данных. Единственным кодом, который вам придется написать, будет эта строка (которую мы расположили в обработчике события Click кнопки "Add Product" ):

Protected Sub btnAddProduct_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddProduct.Click
   'Добавляем новый товар
   AddProductDataSource.Insert()
End Sub