【问题标题】:Filtering on parent of a parent in Dynamic Data在动态数据中过滤父级的父级
【发布时间】:2013-03-29 10:45:16
【问题描述】:

我的模型中有以下关系

餐厅 -> 美食 -> 物品

在项目列表页面上,我需要能够直接按餐厅过滤。如何在 ASP.NET 动态数据应用程序中做到这一点?

【问题讨论】:

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


    【解决方案1】:

    我刚刚使用 EntityDataSource 模拟了您的问题,一切正常。考虑两种方法来解决您的问题。

    第一种方法是使用QueryExtender控件和SearchExpression。更多详细信息,您可以通过链接SearchExpression 找到示例。

    您可以通过链接Multi-Column Search 从史蒂夫关于动态数据的博客中找到这方面的真实示例。如果您将 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; }
        }
    } 
    

    现在您可以在自定义 List.aspx 页面上按餐厅名称搜索 Item(例如)。这是第一种方式。

    第二种方法是在Item 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

    附言

    我想向您推荐一本由 Oleg Sych 撰写的精彩书籍 ASP.NET Dynamic Data Unleashed,您可以在其中找到有关动态数据中扩展过滤的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2019-07-31
      • 2016-12-22
      • 2020-01-14
      • 1970-01-01
      • 2018-04-11
      • 2019-03-06
      • 1970-01-01
      • 2018-10-10
      相关资源
      最近更新 更多