2016-05-06 7 views
1

私はRepeaterコントロールを使用しています.ImGalleryというIDを持つImageタグを1つ持っています。しかし、ファイルのコードでは、私はそれにアクセスすることはできません。イメージIDはC#のバックエンドに表示されません

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

aspx.cs

の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> 

私はにFindControlを使用する場合は、varがnullです。これを行うことが可能であるべきであるあなたのビューで

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

+0

imgGalleryはそのようにリピータの一部ではありません。リピータ内のアイテムの一部です –

+0

まだありません。どこにもアクセスしていません。 –

+0

私はasp.netでデータバインディング、特にリピーターのItemDataBoundイベントを調べる必要があると思います。あなたのリピータにデータソースをバインドし、そのイベントでFindControl –

答えて

1

まず、あなたのリピーターをバインドする必要が

の背後にあるコードで
<asp:Image ID="imgGallery" runat="server" ImageUrl='<%# Eval("Video") %>' /> 

、リピータ内の項目を取得するには、以下を行う必要があり彼のアイテムを反復する。単一の項目に画像コントロールが含まれています。これは動作するはずです:

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

rptImage.Itemsの数は0です –

+0

私はあなたの問題を解決すべきより多くのもので私のanswareを更新しました。 – erikscandola

0

あなたはデータベースの結果に基づいて、Repeaterコントロールで画像をバインドしたい場合は、あなたが直接、代わりにイメージコントロールを見つけることの制御をリピータにデータソースを割り当てることができます。

また、リピーターにはレコードがないため、リピーター内に行がないため、リピーター内のコントロールは検出されません。

関連する問題