UserControl未在ListView中加载

时间:2013-12-05 15:13:56

标签: asp.net listview user-controls

我创建了自己的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中不可见。

1 个答案:

答案 0 :(得分:0)

我不确定您是如何编译代码的,因为我无法直接在ItemDataBound事件中引用phReevooplaceholder控件)。

我需要使用以下内容:

 e.Item.FindControl("phReevoo").Visible = true;

如果您尝试引用ReevooBadge,则同样适用。

为了简化测试,我创建了一个Web用户控件,并将其用作自定义用户控件的替代品。绑定到一个简单的List<string>后,控件显示没有问题。

我建议您检查您的用户控件是否实际呈现在ListView之外。