Я только что смоделировал вашу проблему, используя EntityDataSource и everithing отлично работает. Рассмотрим два пути решения вашей проблемы.
Первый способ состоит в использовании QueryExtender контроля и SearchExpression. Более подробную информацию вы можете найти по ссылке SearchExpression с примерами.
Настоящий пример этого можно найти в блоге Стива о динамических данных по ссылке Multi-Column Search. А если реализовать подход Стива на ваш сайт динамических данных, все, что вам нужно сделать, это изменить метаданные Item, например,
[MetadataTypeAttribute(typeof(Item.ItemMetadata))]
[MultiColumnSearch(
"Item_Name",
"Item_Info",
"Cuisine.Restaurant.Restaurant_Name")]
public partial class Item
{
internal sealed class ItemMetadata
{
public string Item_Name { get; set; }
public string Item_Info { get; set; }
public Cuisine Cuisine { get; set; }
}
}
И теперь вы можете произвести поиск по обычаю List.aspx страницы для Пункт по названию ресторана (например). Это был первый путь.
Второй способ заключается в использовании Где свойство EntityDataSource на ПунктList.aspx страницы.
Простой пример:
<asp:EntityDataSource
ID="ItemGridDataSource"
runat="server"
EnableDelete="true"
OnSelecting="ItemGridDataSource_Selecting"
OnSelected="ItemGridDataSource_OnSelected"
Where="it.Cuisine.Restaurant.Restaurant_IsClose=false" />
или вы можете использовать
protected void Page_Load(object sender, EventArgs e)
{
ItemGridDataSource.WhereParameters.Add(new Parameter("it.Cuisine.Restaurant.Restaurant_Name", TypeCode.String, yourValueFromDropDownForExample));
}
в код-позади.
Дополнительная информация: EntityDataSource
P.S.
Я хотел бы рекомендовать вам большую книгу ASP.NET Dynamic Data Unleashed Олег Сыч, где вы можете найти более подробную информацию о расширенной фильтрации в динамических данных.