【发布时间】:2013-03-29 10:45:16
【问题描述】:
我的模型中有以下关系
餐厅 -> 美食 -> 物品
在项目列表页面上,我需要能够直接按餐厅过滤。如何在 ASP.NET 动态数据应用程序中做到这一点?
【问题讨论】:
标签: asp.net asp.net-dynamic-data
我的模型中有以下关系
餐厅 -> 美食 -> 物品
在项目列表页面上,我需要能够直接按餐厅过滤。如何在 ASP.NET 动态数据应用程序中做到这一点?
【问题讨论】:
标签: asp.net asp.net-dynamic-data
我刚刚使用 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,您可以在其中找到有关动态数据中扩展过滤的更多详细信息。
【讨论】: