Використання параметрів в запитах

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

Помістимо на форму елементи 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 Контрагент, Закупівлі.Кількість, Закупівлі.Ціна, Закупівлі.Кількість 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.

У даному прикладі значення параметра Product підставляється автоматично з властивості SelectedValue елементу DropDownList.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: