Опубликован: 25.09.2008 | Доступ: свободный | Студентов: 3223 / 516 | Оценка: 4.32 / 3.98 | Длительность: 18:50:00
ISBN: 978-5-94774-991-5
Лекция 10:

Использование баз данных в приложениях ASP.NET

< Лекция 9 || Лекция 10: 12345678910

Использование параметров в запросах

В большинстве реальных приложений работы с данными невозможно применять жестко закодированные запросы, т. к. в зависимости от используемого режима они должны содержать различные данные. Для решения этой задачи задействуются параметры, применение которых уже рассматривалось в разделе "Использование параметризованных команд". Для демонстрации этой техники совместно с элементами управления источниками данных создадим форму, отображающую главную и подчиненную таблицы. Роль главной таблицы будет выполнять таблица "Товары", роль подчиненной - "Закупки". При выборе определенного товара на форму должны выводиться только операции закупки данного товара.

Поместим на форму элементы DropDownList и SqlDataSource. Настроим данные элементы на подключение к источнику данных, содержащему список товаров. Определения этих элементов выглядят следующим образом:

<asp:DropDownList ID="DropDownList1" runat="server"
 DataSourceID="SqlDataSource1"
  DataTextField="НаименованиеТовара" DataValueField=
   "КодТовара" Width="196px" AutoPostBack="True">
</asp:DropDownList>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$
ConnectionStrings:TEST_DBConnectionString %>"
  SelectCommand="SELECT DISTINCT [КодТовара],
   [НаименованиеТовара] FROM [Товары]">
</asp:SqlDataSource>

Следует обратить внимание на то, что свойство AutoPostBack элемента DropDownList установлено равным true. Это необходимо для обеспечения автоматического инициирования обратной отсылки при изменении текущего элемента списка, чтобы страница изменялась при выборе другого элемента списка. Нужно сделать так, чтобы при выборе товара из списка содержимое элемента GridView, отображающего закупки, обновлялось. Для реализации данного механизма поместим на форму элементы GridView и еще один - SqlDataSource. Настроим SqlDataSource в соответствии со следующим определением:

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
 ConnectionString="<%$ ConnectionStrings:
 TEST_DBConnectionString %>"
  SelectCommand="SELECT Закупки.КодОперации,
   Закупки.ДатаОперации, Контрагенты.НаименованиеКонтрагента
   AS Контрагент, Закупки.Количество, Закупки.Цена, Закупки.
   Количество * Закупки.Цена AS Стоимость FROM Закупки INNER
   JOIN Контрагенты ON Закупки.КодКонтрагента = Контрагенты.
   КодКонтрагента WHERE (Закупки.КодТовара = @Product )">
  <SelectParameters>
    <asp:ControlParameter ControlID="DropDownList1"
    Name="Product" PropertyName="SelectedValue" />
  </SelectParameters>

</asp:SqlDataSource>

Ключевыми элементами настройки SqlDataSource являются строка запроса, определенная в свойстве SelectCommand, и параметры, определенные в разделе <SelectParameters>. В строке запроса определен параметр @Рroduct, который используется для фильтрации списка закупок по значению кода товара. В разделе параметров определен один параметр, для которого установлено имя Product. Значение для этого параметра извлекается из свойства SelectedValue объекта DropDownList1. Пример экрана браузера, получаемого после запуска данного приложения, представлен на рис. 10.24.

Результат работы приложения, содержащего главную и подчиненную таблицы

Рис. 10.24. Результат работы приложения, содержащего главную и подчиненную таблицы
Диалоговое окно редактирования параметров запроса

Рис. 10.25. Диалоговое окно редактирования параметров запроса

В данном примере значение параметра Product подставляется автоматически из свойства SelectedValue элемента DropDownList. Тем не менее существует возможность использования и других элементов управления, значения свойств которых можно задействовать для этих целей. Для того чтобы настроить извлечение параметра из элемента управления и подстановку его значения в качестве параметра запроса, определенного в SqlDataSource, можно воспользоваться визуальными средствами Visual Studio 2005. Для вызова диалогового окна редактора параметров ( рис. 10.25) нужно щелкнуть по кнопкеокна.

Допустимые типы источников данных параметров можно выбирать из списка. При этом допустимы следующие значения списка:

Control Свойство элемента управления.
Cookie Значение Cookie набора.
Form Переменная формы. С помощью данного типа источника данных параметра можно извлекать значения, отправленные странице элементом ввода.
Profile Значение текущего профиля пользователя.
QueryString Строковое значение запроса. Позволяет извлекать значение из текущей строки запроса.
Session Значение состояния сеанса.
< Лекция 9 || Лекция 10: 12345678910