Public Overrides Function FindControl ( _ id As String _ ) As Control
Dim instance As Page Dim id As String Dim returnValue As Control returnValue = instance.FindControl(id)
public override Control FindControl ( string id )
public: virtual Control^ FindControl ( String^ id ) override
public Control FindControl ( String id )
public override function FindControl ( id : String ) : Control
要查找的控件的标识符。
FindControl 方法只搜索页的直接或顶级容器;它不在页所包含的命名容器中递归搜索控件。
下面的代码示例演示如何使用 FindControl 方法在模板中定位控件。在此示例中,定义了两个 Repeater 控件;每个控件演示了一种不同的方法,这些方法用于在重复器项模板中捕捉 LinkButton 的 Click 事件。
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Private Class RepeaterObject Private _string As String Public Sub New(ByVal label As String) _string = label End Sub Public Property RepeaterLabel() As String Get Return _string End Get Set(ByVal value As String) _string = value End Set End Property End Class Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If (Not IsPostBack) Then Dim al As New ArrayList() al.Add(New RepeaterObject("foo1")) al.Add(New RepeaterObject("foo2")) al.Add(New RepeaterObject("foo3")) Repeater1.DataSource = al Repeater2.DataSource = al DataBind() End If End Sub ' This occurs for Repeater1 and originates from LinkButton onClick. Protected Sub OnMyCommand1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) Dim b As LinkButton = sender If Not (b Is Nothing) Then Dim c As Label = CType(b.Parent.FindControl("foo"), Label) If Not (c Is Nothing) Then c.Text = "text changed in handler" c.ForeColor = System.Drawing.Color.Green End If End If End Sub ' This occurs for Repeater2 and comes from the Repeater onItemCommand. Protected Sub OnMyCommand2(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Dim l As Label = CType(e.Item.FindControl("foo"), Label) If Not (l Is Nothing) Then l.Text = "text changed in handler" l.ForeColor = System.Drawing.Color.Red End If End Sub </script> <html > <head runat="server"> <title>Page FindControl Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Panel ID="Panel1" runat="server" > This repeater sample shows the bubbled event and FindControl when the repeater item OnCommand event occurs.<br /> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <asp:Label runat=server ID="foo" Text='<%#Eval("RepeaterLabel")%>' /> <asp:LinkButton ID="LinkButton1" Text="Change" runat=server OnCommand="OnMyCommand1" /> <br /> </ItemTemplate> </asp:Repeater> <hr /> This repeater shows the bubbled event and FindControl when the repeater OnItemCommand event occurs. <br /> <asp:Repeater ID="Repeater2" runat="server" OnItemCommand=OnMyCommand2> <ItemTemplate> <asp:Label runat=server ID="foo" Text='<%#Eval("RepeaterLabel")%>' /> <asp:LinkButton ID="LinkButton2" Text="Change" runat=server /> <br /> </ItemTemplate> </asp:Repeater> </asp:Panel> </div> </form> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> private class RepeaterObject { private string _string; public RepeaterObject(string label) { _string = label; } public string RepeaterLabel { get { return _string; } set { _string = value; } } } protected void Page_Load() { if (!IsPostBack) { ArrayList al = new ArrayList(); al.Add(new RepeaterObject("foo1")); al.Add(new RepeaterObject("foo2")); al.Add(new RepeaterObject("foo3")); Repeater1.DataSource = al; Repeater2.DataSource = al; DataBind(); } } // This occurs for Repeater1 and originates from LinkButton onClick. protected void OnMyCommand1(object sender, CommandEventArgs e) { LinkButton b = sender as LinkButton; if (b != null) { Label c = (Label)b.Parent.FindControl("foo"); if (c != null) { c.Text = "text changed in handler"; c.ForeColor = System.Drawing.Color.Green; } } } // This occurs for Repeater2 and comes from the Repeater onItemCommand. protected void OnMyCommand2(object sender, RepeaterCommandEventArgs e) { Label l = (Label)e.Item.FindControl("foo"); if (l != null) { l.Text = "text changed in handler"; l.ForeColor = System.Drawing.Color.Red; } } </script> <html > <head runat="server"> <title>Page FindControl Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Panel ID="Panel1" runat="server" > This repeater sample shows the bubbled event and FindControl when the repeater item OnCommand event occurs.<br /> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <asp:Label runat=server ID="foo" Text='<%#Eval("RepeaterLabel")%>' /> <asp:LinkButton Text="Change" runat=server OnCommand="OnMyCommand1" /> <br /> </ItemTemplate> </asp:Repeater> <hr /> This repeater shows the bubbled event and FindControl when the repeater OnItemCommand event occurs. <br /> <asp:Repeater ID="Repeater2" runat="server" OnItemCommand=OnMyCommand2> <ItemTemplate> <asp:Label runat=server ID="foo" Text='<%#Eval("RepeaterLabel")%>' /> <asp:LinkButton Text="Change" runat=server /> <br /> </ItemTemplate> </asp:Repeater> </asp:Panel> </div> </form> </body> </html>
Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。