我的模型中有以下关系
餐厅->美食->菜品
在项目的列表页面上,我需要能够直接通过餐厅过滤。如何在ASP中做到这一点呢?. NET动态数据应用?
我刚刚使用EntityDataSource模拟了您的问题,一切都很好。考虑两种方法来解决你的问题。
第一种方法是使用QueryExtender控件和SearchExpression。您可以通过链接SearchExpression找到更多详细信息。你可以在Steve的博客中找到关于动态数据的链接多列搜索的真实例子。如果您在动态数据站点中实现Steve的方法,您所需要做的就是更改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; }
}
}
现在你可以搜索自定义列表。aspx页面项目按餐厅名称(例如)。这是第一种方法。
第二种方法是在ItemList上使用WhereEntityDataSource的属性。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
注:
我想给你推荐一本很棒的书ASP。. NET Dynamic Data Unleashed by Oleg Sych,在这里你可以找到更多关于扩展过滤的详细信息。