我创建了自己的UserControl,名为'ReevooBadge',并通过注册我的UserControl将它放在我的listview中。但是,我的UserControl在ListView中不可见。这个问题有什么消息吗?
这是我的用户控制
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ReevooBadge.ascx.cs" Inherits="KiaEurope2010.Website.controls.Addons.Widgets.ReevooBadge" %>
<a class="reevoomark <%= this.ClassName %>" href="//mark.reevoo.com/partner/<%= this.CountryCode %>/series:<%= this.SelectionIdentifier %>"><%= this.ReviewsTitle %></a>
我需要通过以下代码实现在我的ListView中实现它
<asp:ListView ID="lvItemCarousel" ItemPlaceholderID="carrouselitems"OnItemDataBound="lvItemCarousel_ItemDataBound"
runat="server">
<layouttemplate>
<asp:PlaceHolder ID="carrouselitems" runat="server" />
</layouttemplate>
<itemtemplate>
<li>
<asp:HyperLink runat="server" ID="hlItem">
<asp:Image runat="server" ID="imItem" />
<div class="modelTitle">
<asp:PlaceHolder runat="server" ID="phReevoo" Visible="false">
<rhm:ReevooBadge runat="server" ID="ReevooBadge" />
</asp:PlaceHolder>
</div>
</asp:HyperLink>
</li>
</itemtemplate>
</asp:ListView>
上面我注册了我的自定义用户控件
<%@ Register Src="~/controls/Addons/Widgets/ReevooBadge.ascx" TagPrefix="rhm" TagName="ReevooBadge" %>
在项目数据绑定中
protected void lvItemCarousel_ItemDataBound(object sender, ListViewItemEventArgs e)
{
//...
phReevoo.Visible = true;
ReevooBadge.ModelItem = this.Item;
ReevooBadge.CountryCode = KiaEurope.SitecoreLayer.Reevoo.Settings.GetReevooKey(LanguageCountryCultureHelper.CurrentCountryCode, Sitecore.Context.Language);
}
但是,用户控件在ListView中不可见。
答案 0 :(得分:0)
我不确定您是如何编译代码的,因为我无法直接在ItemDataBound事件中引用phReevoo
(placeholder
控件)。
我需要使用以下内容:
e.Item.FindControl("phReevoo").Visible = true;
如果您尝试引用ReevooBadge
,则同样适用。
为了简化测试,我创建了一个Web用户控件,并将其用作自定义用户控件的替代品。绑定到一个简单的List<string>
后,控件显示没有问题。
我建议您检查您的用户控件是否实际呈现在ListView
之外。