2016-05-06 5 views
1

Ich benutze Repeater-Steuerelement und darin habe ich ein Image-Tag mit ID als 'imgGallery'. aber im Code hinter der Datei kann ich nicht darauf zugreifen.Bild-ID wird nicht am Ende in C angezeigt #

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; 
     }   
    } 
} 

Wenn ich Findcontrol verwenden dann ist var null.

+0

imgGallery ist auf diese Weise kein Teil des Repeaters. Es ist ein Teil eines Artikels im Repeater –

+0

immer noch. Es greift nirgends zu. –

+0

Ich denke, Sie müssen Databinding in asp.net nachschlagen und vor allem die ItemDataBound-Ereignis von Repeater. Binden Sie eine Datenquelle an Ihren Repeater, dann, in seinem Fall, tun Sie das FindControl –

Antwort

1

Zuerst müssen Sie Ihren Repeater binden:

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

Ihrer Ansicht nach sollten möglich sein, dies zu tun:

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

In Code-behind, um Artikel im Repeater zu bekommen, müssen Sie Iterate durch seine Artikel. Das einzelne Element enthält Ihr Bildsteuerelement. Dies sollte funktionieren:

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

zählen in rptImage.Items ist 0 –

+0

Ich aktualisierte meine Answare mit mehr Dingen, die Ihr Problem lösen sollten. – erikscandola

0

Wenn Sie in Repeater-Steuerelement auf Datenbankergebnis basierend binden Bild wollen, dann können Sie direkt Datenquelle zuweisen Steuerung Repeater anstelle Bildsteuerung zu finden.

Auch Repeater hat keine Aufzeichnung, dann wird es keine Kontrolle finden, die innerhalb des Repeaters ist, da es keine Reihe im Repeater gibt.