Фильтрация базы данных при помощи параметров в ASP.NET 2.0 - Фильтрация на основе значения элемента управления (Web Control)

ОГЛАВЛЕНИЕ

Фильтрация на основе значения элемента управления (Web Control)

Значения параметра для SqlDataSource также могут быть основаны на значении из элемента управления на странице. Относительно предыдущего примера с категориями и товарами, вместо того, чтобы иметь 2 страницы, мы можем создать выпадающий список с категориями, и после выбора значения в нем GridView отображает товары соответственно выбранной категории. Для воплощения данной идеи вам необходимо для начала создать страницу, которая отображает DropDownList, содержащий категории. Далее, добавьте SqlDataSource для того, чтобы получить все товары, где CategoryID равно выбранной в списке категории. Для этого выберите Control в качестве источника параметра ("Parameter source"). Это отобразит выпадающий список элементов управления страницы, тем самым позволяя вам выбрать -  значение какого элемента управления будет использовано. Используйте тот же выпадающий список, который вы только что создали.

После того как вы выполните это, декларативная разметка SqlDataSource будет включать в себя экземпляр <asp:ControlParameter> в наборе SelectParameters. Экземпляр <asp:ControlParameter>, как это показано ниже, предоставляет название параметра (Name), ID элемента управления (ControlID), свойство элемента, чье значение будет использовано в качестве значения параметра (PropertyName), и тип Type:

<asp:SqlDataSource ID="ID" runat="server" ConnectionString="connectionString"
    ProviderName="providerName"
    SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products] WHERE ([CategoryID] = ?)">
    <SelectParameters>
        <asp:ControlParameter Type="Int32"
            Name="CategoryID"
            ControlID="categoriesDDL" PropertyName="SelectedValue" />
    </SelectParameters>
</asp:SqlDataSource>

Следующее изображение показывает список категорий в выпадающем списке и соответствующие товары в GridView. Данная страница использует два элемента управления SqlDataSource: один - для получения всех категорий (которые связаны с DropDownList), и второй - для получения соответствующих товаров (который использует <asp:ControlParameter>AutoPostBack DropDownList в True ("истина"), тем самым когда изменяется выпадающий список вызывается постбэк и GridView обновляется для отображения соответствующих значений. и привязан к GridView). Я установил свойство


Вывод

В данной статье мы рассмотрели способ использования параметризированных запросов вместе с коллекцией SelectParameters SqlDataSource для фильтрации результатов, полученных из запроса к базе данных. SqlDataSource позволяет получать значения для параметров из различных источников, включая жёстко заданные значения, значения строки запроса, значения свойства элемента управления, переменные сессии и т.д. Данные значения параметра могут быть декларативно указаны и не требуют написания кода. Данные значения параметров также могут быть заданы программно, что мы рассмотрим в будущем!

Scott Mitchell

Исходный код примеров