私はネストされたリスト ビューを持っています。目標は、外側のリスト ビューから ID を取得し、それを以下のメソッドに渡すことCurrentCategoryId
です。私が読んだことから、これはイベントハンドラーで行う必要がありますが、OnItemDataBound
それがどのように機能するかを理解するのに苦労していますか?
ご不明な点がございましたら、お知らせください
<asp:ListView ID="ListView1"
ItemType="E_Store_Template.Models.Category"
runat="server"
SelectMethod="GetCategories"
OnItemDataBound="brandList_ItemDataBound">
<ItemTemplate>
<ul>
<li style="list-style-type: none; text-align: left;">
<b style="font-size: large; font-style: normal">
<a href="<%#: GetRouteUrl("ProductsByCategoryRoute", new {categoryName = Item.CategoryName}) %>">
<%#: Item.CategoryName %>
</a>
<asp:ListView ID="brandList" runat="server" ItemType="E_Store_Template.Models.Brand">
<ItemTemplate>
<ul style="list-style-type: none; text-align: left;">
<li>
<a href="<%#: GetRouteUrl("ProductsByCatBrandRoute", new {brandName = Item.BrandName}) %>">
<%#: Item.BrandName %>
</a>
</li>
</ul>
</ItemTemplate>
</asp:ListView>
</b>
</li>
</ul>
</ItemTemplate>
</asp:ListView>
イベントハンドラーはこのようにする必要があると思います
protected List<Brand> brandList_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Category mydata = (Category)dataItem.DataItem;
int CurrentCategoryId = mydata.CategoryID;
var query = _db.Products.Where(p => p.Category.CategoryID == CurrentCategoryId).Select(p => p.Brand).Distinct();
return query.ToList<Brand>();
}
else
{
return null;
}
}
しかし、私にエラーを与えます:
'System.Collections.Generic.List<E_Store_Template.Models.Brand> E_Store_Template.SiteMaster.brandList_ItemDataBound(object, System.Web.UI.WebControls.ListViewItemEventArgs)' has the wrong return type