Finding controls within a Page's control hierarchy can be painful but if you know how the controls are nested you can use the lesser known "$" shortcut to find controls without having to write recursive code. The following example shows how to use the DefaultFocus property to set the focus on a textbox that is nested inside of a FormView control. Notice that the "$" is used to delimit the nesting:
<form id="form1" DefaultFocus="formVw$txtName" runat="server">
<div>
<asp:FormView ID="formVw" runat="server">
<ItemTemplate>
Name:
<asp:TextBox ID="txtName" runat="server"
Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
</ItemTemplate>
</asp:FormView>
</div>
</form>
This little trick can also be used on the server-side when calling FindControl():
TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}
If you know where the control is you can just as easily do this: TextBox tb = formVw.FindControl("txtName") as TextBox;
Will Asrari 3/1/2008 1:47:59 AM
What when we use Master Page?
Rishi 6/16/2009 3:00:03 PM
> What when we use Master Page? No difference. It works as long as you know path to a control in the hierarchy. For example, here is path to a button on a webform which uses master page: ctl00$ContentPlaceHolder1$Button1 where: ctl00 - auto-generated master page id ContentPlaceHolder1 - Content placeholder id Button1 - the button id
kostya.ly 6/16/2009 9:15:14 PM