我的模型中有以下关系
餐厅 - >菜肴 - >项目
在项目列表页面上,我需要能够直接按餐厅过滤。如何在ASP.NET动态数据应用程序中执行此操作?
答案 0 :(得分:0)
我刚刚使用 EntityDataSource 模拟了您的问题,并且正常工作正常。考虑两种方法来解决您的问题。
第一种方法是使用 QueryExtender 控件和 SearchExpression 。您可以通过链接SearchExpression找到更多详细信息。
您可以通过链接Multi-Column Search从Steve的博客中找到有关动态数据的真实示例。如果您实施Steve的动态数据网站方法,您只需要更改项元数据,例如,
[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 页面。这是第一种方式。
第二种方法是在项目 List.aspx 页面上使用 EntityDataSource 的 Where 属性。
简单示例:
<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。强>
我想向您推荐Oleg Sych的一本好书 ASP.NET动态数据释放,您可以在其中找到有关动态数据中扩展过滤的更多详细信息。