私のモデルには次の関係があります
レストラン -> 料理 -> アイテム
Item's List ページで、レストランで直接フィルタリングできるようにする必要があります。ASP.NET Dynamic Data Application でそれを行うにはどうすればよいでしょうか?
私のモデルには次の関係があります
レストラン -> 料理 -> アイテム
Item's List ページで、レストランで直接フィルタリングできるようにする必要があります。ASP.NET Dynamic Data Application でそれを行うにはどうすればよいでしょうか?
EntityDataSourceを使用して問題をシミュレートしたところ、すべて正常に動作します。問題を解決するには、2 つの方法を検討してください。
最初の方法は、QueryExtenderコントロールとSearchExpressionを使用することです。SearchExpressionと例をリンクすることで、より詳細な情報を見つけることができます。
この実際の例は、リンクMulti-Column Search でDynamic Data に関する Steve のブログから見つけることができます。また、Steve のアプローチを Dynamic Data サイトに実装する場合は、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ページでレストラン名 (たとえば)で項目を検索できるようになりました。最初の方法でした。
2 つ目の方法は、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
PS
Oleg Sych によるASP.NET Dynamic Data Unleashedという優れた本をお勧めします。この本では、Dynamic Data の拡張フィルタリングに関する詳細情報を見つけることができます。