Пошаговое руководство. Фильтрация данных на веб-странице с помощью декларативного синтаксиса
Элемент управления QueryExtender служит для создания фильтров данных, получаемых из источника данных, без необходимости создания явных запросов в источнике данных. Элемент управления QueryExtender предоставляет следующие преимущества:
Позволяет применять более развернутые выражения для фильтрации, нежели написание предложения Where.
Предоставляет общий язык запросов для элементов управления LinqDataSource и EntityDataSource, а также сторонних источников данных. Например, если с этими элементами управления источником данных используется QueryExtender, можно обеспечить возможность поиска на веб-странице без написания зависящего от модели предложения Where или оператора "eSQL".
Поддерживает различные параметры фильтрации, которые могут применяться по отдельности или в сочетании.
Элемент управления QueryExtender можно использовать в разметке веб-страницы для фильтрации данных только с помощью декларативного синтаксиса.
Фильтрация данных в этом пошаговом руководстве демонстрируется за счет выбора значений в таблице Products образца базы данных AdventureWorks.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание управляемого данными веб-сайта ASP.NET.
Добавление данных на веб-сайт с помощью Visual Studio 2010 или Visual Web Developer 2010, экспресс-выпуск.
Использование элемента управления LinqDataSource для доступа к данным.
Использование параметров фильтра для создания отфильтрованных запросов, отображающих только выбранные записи.
Отображение данных с помощью элемента управления GridView.
Обязательные компоненты
Для выполнения инструкций данного пошагового руководства потребуется следующее.
Visual Studio 2010 или Visual Web Developer 2010, экспресс-выпуск.
SQL Server Express. Также можно использовать SQL Server при условии внесения изменений в некоторые процедуры.
Образец базы данных AdventureWorks. В этом пошаговом руководстве на веб-сайт будет добавлен файл базы данных и выполнено подключение к файлу с расширением MDF. Сведения о подключении к базе данных в Visual Studio см. в разделе Практическое руководство. Подключение к базе данных AdventureWorksLT с помощью MDF-файла. Можно также загрузить образец базы данных AdventureWorks и подключиться к нему в Visual Studio. Сведения об установке базы данных AdventureWorks и создании подключения к ней в Visual Studio см. в разделе Практическое руководство. Настройка образца базы данных AdventureWorksLT для разработки под ASP.NET.
Создание веб-узла ASP.NET
Для начала потребуется создать веб-сайт. Если веб-сайт ASP.NET уже создан, его можно использовать в данном пошаговом руководстве.
В данном пошаговом руководстве используется проект веб-сайта. Вместо этого можно использовать проект веб-приложения. Сведения о различиях между этими типами веб-проектов см. в разделе Сравнение проектов веб-приложений с проектами веб-сайтов.
Создание веб-узла ASP.NET
Запустите Visual Studio или Visual Web Developer.
В меню Файл выберите пункт Новый веб-узел. (Если этот пункт отсутствует, выберите команду Создать, а затем — Веб-сайт.)
Откроется диалоговое окно Новый веб-узел.
В разделе Установленные шаблоны щелкните Visual Basic или Visual C#, затем выберите Веб-сайт ASP.NET.
В поле Расположение в Интернете выберите пункт Файловая система и введите имя папки, в которой будут храниться страницы веб-сайта. Например, введите имя папки C:\Websites\FilterDemo.
Нажмите кнопку ОК.
Visual Studio создаст веб-проект, включающий стандартные функциональные возможности для макета (главную страницу, страницы содержимого Default.aspx и About.aspx и каскадную таблицу стилей), технологии Ajax (файлы клиентских скриптов) и проверки подлинности (членство в ASP.NET).
В данном пошаговом руководстве не будет использоваться страница Default.aspx. Вместо нее будет создана новая страница, не использующая главную страницу.
Закройте страницу Default.aspx.
Нажмите правой кнопкой мыши корневую папку веб-сайта и выберите команду Добавить новый элемент.
В разделе Установленные шаблоны выберите пункт Веб-форма, затем нажмите кнопку Добавить.
Visual Studio создаст новую страницу с именем Default2.aspx.
Измените имя по умолчанию на имя FilterDemo.aspx и нажмите кнопку Добавить.
Сохраните страницу.
Добавление данных на веб-узел
В этом подразделе на веб-сайт будет добавлен образец базы данных AdventureWorks. Если веб-сайт уже подключен к базе данных AdventureWorks, эту процедуру можно пропустить.
Добавление файла базы данных к проекту
Добавьте на веб-сайт файл образца базы данных AdventureWorks.mdf и подключение к ней в Visual Studio.
Сведения об установке базы данных AdventureWorks и создании подключения к ней в Visual Studio см. в разделе Практическое руководство. Подключение к базе данных AdventureWorksLT с помощью MDF-файла.
Примечание
Процедура по установке файлов образца базы данных AdventureWorks.mdf и AdventureWorksLT.mdf аналогична.В процессе установки вместо базы данных AdventureWorksLT будет выбран образец базы данных AdventureWorks.
Следующим шагом является создание модели данных. Можно использовать модель LINQ to SQL или модель EDM. В этом пошаговом руководстве используется модель данных LINQ to SQL.
Создание модели данных с использованием LINQ to SQL
Откройте Обозреватель решений, щелкните веб-сайт правой кнопкой мыши, щелкните Добавить и щелкните Создать элемент.
В разделе Установленные шаблоны последовательно выберите Данные и Классы LINQ-SQL.
В поле Имя введите имя модели базы данных. Например, можно указать имя файла AdventureWorks.dbml и нажать кнопку Добавить.
Примечание
Если появится запрос на создание папки App_Code, нажмите кнопку Да.
Откроется Реляционный конструктор объектов.
В рабочей области конструирования щелкните ссылку Обозреватель серверов.
В окне Обозреватель серверов последовательно разверните базу данных AdventureWorks, узел Таблицы, а затем перетащите таблицу Products в окно конструктора.
Таблица и ее столбцы отображаются в окне конструктора в виде сущностей.
Сохраните файл с расширением DBML и закройте его.
В меню Построение выберите команду Построить.
Добавление элемента управления источником данных
Следующим этапом является добавление на веб-страницу элемента управления источником данных и его настройка для работы с базой данных. Элемент управления QueryExtender, обеспечивающий фильтрацию, поддерживает элементы управления LinqDataSource и EntityDataSource. В данном пошаговом руководстве будет использован элемент управления LinqDataSource.
Добавление элемента управления источником данных
Перейдите на ранее созданную страницу FilterDemo.aspx или откройте ее.
Перейдите в представление Конструктор.
Откройте Панель элементов, перейдите на вкладку Данные и перетащите элемент управления LinqDataSource на страницу.
В меню смарт-тегов для элемента управления LinqDataSource выберите команду Настроить источник данных.
Выберите пункт Показывать только объекты DataContext.
В разделе Выберите контекстный объект выберите AdventureWorksDataContext и нажмите кнопку Далее.
В разделе Таблица выберите пункт Products (Table<Product>).
В разделе GroupBy выберите пункт Нет.
В разделе Выбрать выберите все столбцы и нажмите кнопку Готово.
Примечание
Чтобы выбрать все столбцы, можно установить флажок *.Для заполнения таблицы и столбцов необходимо построить веб-приложение после создания модели данных.
В окне Свойства убедитесь, что заданы следующие два свойства:
Свойству ContextTypeName присвоено значение AdventureWorksDataContext.
Свойству TableName присвоено значение "Products".
Перейдите в представление Исходный код.
Разметка будет аналогична разметке, приведенной в следующем примере.
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="AdventureWorksDataContext" EntityTypeName="" TableName="Products" > </asp:LinqDataSource>
Фильтрация данных с помощью декларативного синтаксиса
В этом подразделе на веб-страницу будет добавлена возможность поиска. Для этого потребуется добавить элементы управления, принимающие ввод пользовательских данных. Также будет использован элемент управления QueryExtender и заданы его параметры фильтра на основе пользовательского ввода. Элемент управления QueryExtender позволяет выполнять эту процедуру с помощью декларативного синтаксиса. Чтобы предоставить возможность поиска на веб-сайте, для этого пошагового руководства будет использован следующий параметр фильтра:
элемент управления SearchExpression, который будет использован для поиска имен продуктов, соответствующих указанному строковому значению;
элемент управления RangeExpression, который будет использован для поиска продуктов, у которых значение столбца ReorderPoint находится в указанном диапазоне;
элемент управления PropertyExpression, который будет использован для поиска продуктов, относящихся к категории готовых изделий;
элемент управления CustomExpression, который будет использован для выполнения запроса LINQ, определяемого пользователем.
Результаты отфильтрованных данных будут отображены в элементе управления GridView.
Добавление элемента управления фильтрацией
Перейдите в представление Исходный код.
В теге body после закрывающего тега элемента управления LinqDataSource добавьте следующую разметку для страницы:
<asp:QueryExtender runat="server" TargetControlID="LinqDataSource1"> </asp:QueryExtender>
Это обеспечивает добавление на страницу элемента управления QueryExtender и задает в качестве связанного с ним элемента управления источником данных элемент управления LinqDataSource, добавленный ранее.
Примечание
Можно добавить на страницу элемент управления QueryExtender, перетащив его из панели элементов.Однако этот элемент управления не поддерживает добавление источника данных или выражений в конструктор.
Поиск строк
Далее будет добавлен объект SearchExpression, настраиваемый для выполнения поиска "начинается с" путем использования значения в текстовом поле.
Поиск строки
В Панели элементов перейдите к узлу Стандартные и перетащите элемент управления TextBox на страницу.
Перед открывающим тегом элемента управления TextBox вставьте текст "Search:", чтобы добавить заголовок.
Задайте для свойства идентификатора значение SearchTextBox.
Разметка для элемента управления текстовым полем будет аналогична разметке, которая приведена в следующем примере.
Search: <asp:TextBox ID="SearchTextBox" runat="server" />
Между открывающим и закрывающим тегами элемента управления QueryExtender добавьте следующий фильтр SearchExpression:
<asp:SearchExpression SearchType="StartsWith" DataFields="Name"> <asp:ControlParameter ControlID="SearchTextBox" /> </asp:SearchExpression>
Выражение поиска в столбце Name выполняет поиск продуктов, название которых начинается со строки, указанной в элементе управления SearchTextBox.
В окне Панель элементов перетащите на страницу элемент управления Button и задайте для его свойства Text значение Search.
Разметка для кнопки будет аналогична разметке, которая приведена ниже.
<asp:Button ID="Button1" runat="server" Text="Search" />
Из панели элементов перетащите элемент управления GridView на страницу и задайте его свойства, как показано в следующем примере.
<asp:GridView ID="GridView1" runat="server" DataSourceID="LinqDataSource1" DataKeyNames="ProductID" AllowPaging="True"> </asp:GridView>
Результаты поиска будут отображены в элементе управления GridView.
Тестирование фильтра поиска
Теперь можно проверить созданный фильтр поиска.
Процедура тестирования фильтра поиска
Нажмите клавиши CTRL+F5 для запуска страницы.
В текстовом поле поиска введите строку и нажмите кнопку Search.
Например, введите С и нажмите кнопку Search. Обратите внимание, что результаты, показанные в элементе управления GridView, содержат только названия продуктов, начинающихся с буквы "С".
Примечание
Поставщик данных LINQ не учитывает регистр.Однако при использовании поставщика данных, который поддерживает свойство ComparisonType, можно изменить возможность учета регистра.
Закройте браузер.
Поиск диапазона значений
Далее будет добавлен объект RangeExpression, настраиваемый для поиска продуктов в столбце ReorderPoint, у которых значение ReorderPoint находится в диапазоне, определяемом значениями в двух текстовых полях.
Поиск диапазона
Перейдите в представление Исходный код.
Из Панели элементов перетащите на страницу два элемента управления TextBox. Текстовые поля можно размещать под текстовым полем поиска.
Текстовые поля будут использованы для указания начального и конечного значения диапазона.
Перед открывающимся тегом первого элемента управления TextBox введите текст "From:", а перед открывающимся тегом второго элемента управления TextBox — текст "To:".
Присвойте идентификатору первого текстового поля значение FromTextBox, а идентификатору второго текстового поля — значение ToTextBox.
Разметка для элементов управления текстовыми полями будет аналогична разметке, которая приведена в следующем примере.
From: <asp:TextBox ID="FromTextBox" runat="server" ></asp:TextBox> To: <asp:TextBox ID="ToTextBox" runat="server" ></asp:TextBox>
Между открывающим и закрывающим тегами элемента управления QueryExtender добавьте следующий фильтр RangeExpression:
<asp:RangeExpression DataField="ReorderPoint" MinType="Inclusive" MaxType="Inclusive"> </asp:RangeExpression>
Он выполняет поиск в столбце ReorderPoint и добавляет в условия поиска значения, указанные в текстовых полях.
Между открывающим и закрывающим тегами фильтра RangeExpression добавьте следующую разметку:
<asp:ControlParameter ControlID="FromTextBox" /> <asp:ControlParameter ControlID="ToTextBox" />
Она обеспечивает настройку текстовых полей для предоставления фильтру значений параметров. Разметка для выполненного фильтра RangeExpression соответствует разметке, приведенной в следующем примере.
<asp:RangeExpression DataField="ReorderPoint" MinType="Inclusive" MaxType="Inclusive"> <asp:ControlParameter ControlID="FromTextBox"/> <asp:ControlParameter ControlID="ToTextBox"/> </asp:RangeExpression>
Тестирование фильтра диапазона
Теперь можно проверить созданный фильтр диапазона.
Процедура тестирования фильтра диапазона
Нажмите клавиши CTRL+F5 для запуска страницы.
Введите значения в текстовые поля From и To, а затем нажмите кнопку Search.
Например, введите диапазон от 300 до 400 и нажмите кнопку Search. Возвращаемые данные будут содержать названия продуктов с пунктом повторного заказа от 300 до 400. Обратите внимание, что результаты, показанные в элементе управления GridView, содержат только названия продуктов со значениями для повторного заказа в диапазоне от 300 до 400.
Закройте браузер.
Поиск на основе логического значения
Далее будет добавлен объект PropertyExpression, настраиваемый для фильтрации данных на основе логического значения. Логическое значение указывается в элементе управления полем с флажком.
Процедура поиска на основе логического значения
В окне Панель элементов перетащите элемент управления CheckBox на страницу и задайте для свойства ID значение MakeCheckBox. Поле с флажком можно размещать под текстовыми полями, добавленными ранее.
Перед открывающим тегом элемента управления CheckBox вставьте текст "Make More", чтобы добавить заголовок для поля с флажком.
Разметка будет аналогична разметке, приведенной в следующем примере.
Make More: <asp:CheckBox ID="MakeCheckBox" runat="server" />
Между открывающим и закрывающим тегами элемента управления QueryExtender, ниже выражения диапазона добавьте следующую разметку:
<asp:PropertyExpression></asp:PropertyExpression>
Она обеспечивает добавление на страницу параметра фильтра для выражения свойства.
Между открывающим и закрывающим тегами фильтра PropertyExpression добавьте элемент управления ControlParameter.
Присвойте идентификатору параметра элемента управления ControlParameter значение MakeCheckBox.
Задайте для свойства Name параметра ControlParameter значение MakeFlag, соответствующее столбцу фильтрации.
Разметка будет аналогична разметке, приведенной ниже.
<asp:PropertyExpression> <asp:ControlParameter ControlID="MakeCheckBox" Name="MakeFlag" /> </asp:PropertyExpression>
Тестирование логического фильтра
Теперь можно проверить созданный логический фильтр.
Процедура тестирования логического фильтра
Нажмите клавиши CTRL+F5 для запуска страницы.
Установите флажок Make More и нажмите кнопку Search.
Возвращаемые данные будут содержать только названия продуктов со значением в столбце MakeFlag, равным true (столбец отмечен флажком).
Закройте браузер.
Использование нескольких фильтров
Можно использовать несколько фильтров одновременно. При использовании нескольких фильтров запрос создает предложения AND для них. В этом подразделе будет выполнена совместная проверка всех фильтров.
Тестирование нескольких фильтров
Нажмите клавиши CTRL+F5 для запуска страницы.
В текстовом поле Search введите С.
Установите флажок Make More.
В текстовом поле From введите "500".
В текстовом поле To введите "1000".
Нажмите кнопку Найти.
Возвращаемые данные будут содержать названия продуктов, начинающихся с буквы "С", с отмеченным столбцом Makeflag и значением ReorderPoint в диапазоне от 500 до 1000.
Применение пользовательского запроса для фильтрации данных
В этом подразделе данные будут отфильтрованы с помощью пользовательского запроса LINQ. Для этого выполните следующие действия:
Создайте пользовательский запрос LINQ в файле класса для страницы.
Добавьте на страницу элемент управления источником данных и элемент управления QueryExtender.
Для выполнения пользовательского запроса LINQ добавьте к элементу управления QueryExtender пользовательское выражение.
Добавьте элемент управления GridView для отображения результатов запроса.
Для выполнения запроса можно использовать фильтр CustomExpression или MethodExpression. Действия этих фильтров аналогичные. В этом пошаговом руководстве будет использован фильтр CustomExpression. Сведения об использовании фильтра выражений методов см. в разделе MethodExpression.
Примечание
Если на одной странице в качестве других параметров фильтра используется фильтр CustomExpression или MethodExpression, он должен быть первым исполняемым фильтром в элементах управления QueryExtender.
Следующим этапом является создание пользовательского запроса LINQ.
Создание пользовательского запроса LINQ
Откройте Обозреватель решений, щелкните веб-приложение правой кнопкой мыши, щелкните Добавить и выберите команду Создать элемент.
В разделе Установленные шаблоны выберите пункт Веб, а затем — Веб-форма. Для страницы можно использовать имя, установленное по умолчанию.
Установите флажок Размещать код в отдельном файле и нажмите кнопку Добавить.
В Обозревателе решений нажмите правой кнопкой мыши созданную страницу и выберите команду Перейти к коду.
Добавьте следующие пространства имен с помощью директив using (C#) или Imports (Visual Basic).
Imports System.Web.UI.WebControls.Expressions Imports System.Data.Linq
using System.Web.UI.WebControls.Expressions; using System.Linq;
Добавьте в класс следующий метод.
Protected Sub FilterProducts(ByVal sender As Object, ByVal e As CustomExpressionEventArgs) e.Query = From p In e.Query.Cast(Of Product)() _ Where p.ListPrice >= 3500 _ Select p End Sub
protected void FilterProducts(object sender, CustomExpressionEventArgs e) { e.Query = from p in e.Query.Cast<Product>() where p.ListPrice >= 3500 select p; }
В столбце ListPrice запрос выполняет поиск продуктов, ориентировочная цена которых составляет не менее 3500.
Следующим этапом является добавление на страницу элемента управления источником данных и его настройка для работы с моделью данных. В данном пошаговом руководстве будет использован элемент управления LinqDataSource.
Добавление элемента управления источником данных
Перейдите в представление Конструктор.
В окне Панель элементов разверните узел Данные и перетащите на страницу элемент управления LinqDataSource.
Выберите смарт-тег и щелкните пункт Настроить источник данных.
Выберите пункт Показывать только объекты DataContext.
В разделе Выберите контекстный объект выберите AdventureWorksDataContext и нажмите кнопку Далее.
В разделе Таблица выберите пункт Products (Table<Product>).
В разделе GroupBy выберите пункт Нет.
В разделе Выбрать выберите все столбцы и нажмите кнопку Готово.
Примечание
Чтобы выбрать все столбцы, можно установить флажок *.
В окне Свойства задайте для свойства ContextTypeName значение AdventureWorksDataContext.
В окне Свойства задайте для свойства TableName значение "Products".
Перейдите в представление Исходный код.
Разметка будет аналогична разметке, приведенной в следующем примере.
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="AdventureWorksDataContext" EntityTypeName="" TableName="Products" > </asp:LinqDataSource>
Выполнение настраиваемого фильтра
В этом разделе будут добавлены элементы управления фильтрацией, позволяющие выполнить пользовательский запрос.
Добавление элемента управления фильтрацией
Перейдите в представление Исходный код.
В элементе body после закрывающего тега элемента управления LinqDataSource добавьте следующую разметку для страницы:
<asp:QueryExtender runat="server" TargetControlID="LinqDataSource1"> </asp:QueryExtender>
Это обеспечивает добавление на страницу элемента управления QueryExtender и задает в качестве связанного с ним элемента управления источником данных элемент управления LinqDataSource, добавленный ранее.
Между открывающим и закрывающим тегами элемента управления QueryExtender добавьте фильтр CustomExpression и присвойте его атрибуту OnQuerying значение FilterProducts.
Разметка будет аналогична разметке, приведенной ниже.
<asp:CustomExpression OnQuerying="FilterProducts"></asp:CustomExpression>
Из панели элементов перетащите элемент управления GridView на страницу и задайте его свойства, как показано в следующем примере.
<asp:GridView ID="GridView1" runat="server" DataSourceID="LinqDataSource1" DataKeyNames="ProductID" AllowPaging="True"> </asp:GridView>
Результаты отфильтрованных данных будут отображены в элементе управления GridView.
Тестирование настраиваемого фильтра
Теперь можно протестировать настраиваемый фильтр.
Тестирование веб-сайта
Нажмите клавиши CTRL+F5 для запуска страницы.
Возвращаемые данные будут содержать только названия продуктов с ориентировочной ценой не менее 3500.
Пример кода
После выполнения инструкций данного пошагового руководства разметка созданной страницы будет иметь вид, представленный в следующем примере. (В примере показана только разметка, соответствующая объявлению DOCTYPE.)
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Filter Demo</title>
</head>
<body>
<form id="form1" runat="server">
Search:<asp:TextBox ID="SearchTextBox" runat="server" />
<p>
Make More:<asp:CheckBox ID="MakeCheckBox" runat="server" />
<p>
From:<asp:TextBox ID="FromTextBox" runat="server" ></asp:TextBox>
To:<asp:TextBox ID="ToTextBox" runat="server" ></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" runat="server" Text="Search" />
</p>
<asp:LinqDataSource ID="LinqDataSource1"
ContextTypeName="FilterDemo.AdventureWorksDataContext"
TableName="Products" runat="server">
</asp:LinqDataSource>
<asp:QueryExtender runat="server" TargetControlID="LinqDataSource1">
<asp:SearchExpression SearchType="StartsWith" DataFields="Name" >
<asp:ControlParameter ControlID="SearchTextBox" />
</asp:SearchExpression>
<asp:RangeExpression DataField="ReorderPoint" MinType="Inclusive" MaxType="Inclusive">
<asp:ControlParameter ControlID="FromTextBox" />
<asp:ControlParameter ControlID="ToTextBox" />
</asp:RangeExpression>
<asp:PropertyExpression>
<asp:ControlParameter ControlID="MakeCheckBox" Name="MakeFlag" />
</asp:PropertyExpression>
</asp:QueryExtender>
<asp:GridView ID="GridView1" runat="server"
DataSourceID="LinqDataSource1" AllowPaging="True"
DataKeyNames="ProductID>
</asp:GridView>
</form>
</body>
</html>
После выполнения инструкций данного пошагового руководства разметка страницы с настраиваемым фильтром будет иметь вид, представленный в следующем примере. (В примере показана только разметка, соответствующая объявлению DOCTYPE.)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Custom Filter</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="AdventureWorksDataContext" EntityTypeName=""
TableName="Products">
</asp:LinqDataSource>
<asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="LinqDataSource1">
<asp:CustomExpression OnQuerying="FilterProducts"></asp:CustomExpression>
</asp:QueryExtender>
<asp:GridView ID="GridView1" runat="server"
DataSourceID="LinqDataSource1"
DataKeyNames="ProductID" AllowPaging="True">
</asp:GridView>
</form>
</body>
</html>
После выполнения инструкций данного пошагового руководства код пользовательского запроса LINQ в файле класса страницы будет иметь вид, представленный в следующем примере.
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.Expressions
Imports System.Data.Linq
Partial Class CustomVB
Inherits System.Web.UI.Page
Protected Sub FilterProducts(ByVal sender As Object, ByVal e As CustomExpressionEventArgs)
e.Query = From p In e.Query.Cast(Of Product)() _
Where p.ListPrice >= 3500 _
Select p
End Sub
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.Expressions;
using System.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void FilterProducts(object sender, CustomExpressionEventArgs e)
{
e.Query = from p in e.Query.Cast<Product>()
where p.ListPrice >= 3500
select p;
}
}
Следующие действия
В данном пошаговом руководстве элемент управления QueryExtender используется для фильтрации данных с помощью декларативного синтаксиса. В элементе управления QueryExtender доступно больше параметров фильтрации, чем описано в данном пошаговом руководстве. Например, можно сделать следующее:
Сортировать данные путем добавления на веб-страницу фильтров OrderByExpression и ThenBy.
Создать настраиваемый фильтр с помощью фильтра MethodExpression. Дополнительные сведения см. в разделе MethodExpression.
Примечание
Элемент управления QueryExtender предоставляет элементы управления DynamicFilter и ControlFilterExpression, которые можно использовать на веб-сайтах платформы динамических данных ASP.NET для обеспечения дополнительной фильтрации.Такие фильтры поддерживают только веб-сайты платформы динамических данных ASP.NET.Дополнительные сведения см. в разделе QueryExtender.