在动态数据中过滤父项的父项

时间:2013-03-29 10:45:16

标签: asp.net asp.net-dynamic-data

我的模型中有以下关系

餐厅 - >菜肴 - >项目

在项目列表页面上,我需要能够直接按餐厅过滤。如何在ASP.NET动态数据应用程序中执行此操作?

1 个答案:

答案 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动态数据释放,您可以在其中找到有关动态数据中扩展过滤的更多详细信息。