Динамические данные ASP.NET добавляют на страницу дополнительные критерии фильтрации

Как мне добавить дополнительные критерии поиска / фильтрации в веб-приложение с динамическими данными?

Я создал веб-приложение с динамическими данными, используя базу данных Northwind, и я использую настраиваемую страницу для таблицы сотрудников (на основе шаблона страницы ListDetails.aspx). Я хотел бы добавить на страницу дополнительные параметры search / filter / where. По умолчанию коллекция параметров where динамически создается на основе элемента управления FilterRepeater, который также динамически создается на основе отношений «внешнего ключа» в таблице сотрудников.

Пытаясь добавить дополнительные критерии поиска, я привязался к событию Selecting объекта LinqDataSource GridView и пытаюсь добавить дополнительные элементы в коллекцию WhereParameters объекта LinqDataSourceSelectEventArgs.

Проблема в том, что я не могу указать, какой тип сравнения нужно провести. Коллекция WhereParameters принимает только String и Object, но не то, как их сравнивать. Что я действительно хотел бы сделать, так это добавить в коллекцию делегатов предикатов ...

Как мне добавить на эту страницу дополнительные критерии поиска? Через атрибуты, применяемые к объекту LINQ To SQL (если да, то как)? Что, если критерий / критерий не основан на самой сущности, как я могу добавить критерии поиска в этом случае?

Аарон Хоффман


person Aaron Hoffman    schedule 09.04.2009    source источник
comment
в дополнение к ответу ниже, форумы DD, хотя и медленно загружаются, но, к сожалению, являются лучшим источником информации о DD на данный момент.   -  person jlembke    schedule 09.04.2009


Ответы (2)


Вот что работает в ASP.NET 4.0: http://www.olegsych.com/2010/07/understanding-aspnet-dynamic-data-filter-templates/

person Oleg Sych    schedule 29.07.2010

Если вы хотите добавить в приложение свои собственные критерии, которые автоматически не предоставляет вам DD, вам нужно перейти на DynamicDataFiltering для этого. Сама DynamicData в настоящее время не поддерживает настраиваемые фильтры и поиск. Реализовать несложно. Джош Хейес проделал большую работу над этим.

Вернись, если это не совсем то, что ты ищешь

РЕДАКТИРОВАТЬ: Кроме того, если вы просто собираетесь выполнить дополнительную фильтрацию отображаемых данных, вы можете написать что-то вроде этого, возможно, в Page_Init без проекта фильтрации Джоша:

GridDataSource.WhereParameters.Add(new Parameter("it.myColumn", TypeCode.Int32, myValue));

Выполнение «in» или «contains» немного сложнее, и для этого потребуется DynamicDataFiltering.

person jlembke    schedule 09.04.2009
comment
Я попытался следовать указаниям Джоша по преобразованию LinqDataSource в DynamicLinqDataSource, но я так и не получил действия, как он сказал: «вызываемый источник UpgradeData появляется во всплывающем окне Action». Вы обнаружили, что это так? - person Jason Marcell; 11.11.2009
comment
@jlembke, я сделаю это, но пока вы смогли обойти это? - person Jason Marcell; 11.11.2009
comment
Джейсон, я имел в виду, я думаю, что получил это действие, но моя память об этом отрывочна. Извините, что больше не помогу .. - person jlembke; 12.11.2009
comment
Этот ответ был правильным для динамических данных ASP.NET 3.5, но в DD 4.0 теперь это поддерживается. Ответ Олега / сообщение в блоге описывает это очень подробно. - person Aaron Hoffman; 05.11.2010