views:

173

answers:

3

I hope someone can help me. It's a pretty newbie question, I'm afraid. I have an image inside a repeater, and I would like to change its IMAGEURL based on parameter that's being passed to it.

<asp:Repeater ID="Repeater" runat="server">
     <HeaderTemplate>
         <asp:Image ID="imgType" runat="server" />   
     </HeaderTemplate>         
     <ItemTemplate>     
         <%# Eval("DisplayName")%>            
     </ItemTemplate>
     <SeparatorTemplate>
         <hr />
     </SeparatorTemplate>
 </asp:Repeater>

There is a SWITCH statement in the code behind that is altering the IMAGEURL depending on what's being passed to it. Inevitably, however, the images ID ("imgType") is not visible to the SWITCH statement (presumably because it's inside a REPEATER).

Any suggestions on the best way to implement this would be greatly appreciated.

Sorry for such a newbie question.

+1  A: 

You can take a look here for information on finding controls in a repeaters header and footer, but this should sum it up:

// Get control from <HeaderTemplate>
Image imgTypeControl = (Image)myRepeater.Controls[0].Controls[0].FindControl("imgType");

// Get control from <FooterTemplate>
Image imgTypeControl = (Image)myRepeater.Controls[myRepeater-Controls.Count - 1].Controls[0].FindControl("imgType");
sshow
A: 

You can find your Image control in ItemCreated event handler of Repeater like this:

protected void Repeater_ItemCreated(Object Sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        Image imgType = (Image)e.Item.FindControl("imgType");
    }
}
tpeczek