图片ID未显示在C#的后端

时间:2016-05-06 07:57:54

标签: c# asp.net repeater

我正在使用Repeater控件,其中我有一个ID标签,其ID为' imgGallery'。但在文件后面的代码中,我无法访问它。

ASPX

<div class="col-md-4 col-sm-12">
    <div class="col-md-2">
        <asp:Repeater ID="rptImage" runat="server">
             <ItemTemplate>
                  <asp:Image ID="imgGallery" runat="server" />
             </ItemTemplate>
         </asp:Repeater>
    </div>
</div> 

aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    using (DBDataContext dt = new DBDataContext())
    {
        var frm = from i in dt.GalleryMasters
                  where i.CategoryId == 1
                  select i;
        foreach (var item in frm)
        {
            Image img = (Image)rptImage.FindControl("imgGallery");
            img.ImageUrl = item.Image;
            ((HtmlControl)(FindControl("ifrm"))).Attributes["src"] = item.Video;
        }           
    }
}

如果我使用FindControl,则var为null。

2 个答案:

答案 0 :(得分:1)

首先,您需要绑定转发器:

rptImage.DataSource = frm.ToList();
rptImage.DataBind();

在您看来应该可以这样做:

<asp:Image ID="imgGallery" runat="server" ImageUrl='<%# Eval("Video") %>' />

在代码背后,为了获得转发器中的项目,您需要迭代他的项目。单个项目包含您的图像控件。这应该有效:

foreach (RepeaterItem item in rptImage.Items) {
    Image img = (Image)item.FindControl("imgGallery");
    // Some other code
}

答案 1 :(得分:0)

如果要根据数据库结果在Repeater控件中绑定图像,则可以直接将数据源分配给Repeater控件,而不是查找图像控件。

同时Repeater没有任何记录,因此它不会找到转发器内部的任何控件,因为转发器中没有任何行。