Setting a labels "for" attribute inside a repeater
It’s nice to add <labels> to your form fields and set the labels “for” attribute so that it references the field it is a label for.
e.g.
<label for="emailaddress">Email</label> <input type="text" id="emailaddress"/>
Now if you’re referencing asp.net controls you can use the clientid property.
e.g.
<label for="<%= emailaddress.clientid()%>">Email</label> <asp:TextBox runat="server" ID="emailaddress" />
All nice an easy so far. The situation gets a little bit more complicated when you start nesting this inside a repeater.
e.g.
<asp:Repeater runat="server" ID="rpt1"> <itemTemplate> <label for="<%= emailaddress.clientid()%>">Email</label> <asp:TextBox runat="server" ID="emailaddress" /> </itemTemplate> </asp:Repeater>
this won’t work.
Here’s what you need to do instead.
<asp:Repeater runat="server" ID="rpt1">
<itemTemplate>
<label for="<%# container.findcontrol("emailaddress").clientid()%>">Email</label>
<asp:TextBox runat="server" ID="emailaddress" />
</itemTemplate>
</asp:Repeater>
This entry was posted by nerdboy on Sunday, November 15th, 2009 at 9:08 pm and is filed under asp.net. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response below, or trackback from your own site.