1

我的模型中有以下关系

餐厅 -> 美食 -> 物品

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

4

1 回答 1

0

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

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

您可以通过链接多列搜索从史蒂夫关于动态数据的博客中找到这方面的真实示例。如果你在你的动态数据网站上实现史蒂夫的方法,你需要做的就是改变你的项目元数据,例如,

[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 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));
}

在代码隐藏中。

更多信息:实体数据源

附言

我想向您推荐一本 Oleg Sych 所著的ASP.NET Dynamic Data Unleashed的好书,您可以在其中找到有关 Dynamic Data 中扩展过滤的更多详细信息。

于 2013-04-05T10:52:36.907 回答