在页命名容器中搜索带指定标识符的服务器控件。
命名空间:System.Web.UI
程序集:System.Web(在 system.web.dll 中)
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
参数
- id
要查找的控件的标识符。
返回值
指定的控件,或为 空引用(在 Visual Basic 中为 Nothing)(如果指定的控件不存在的话)。
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 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
.NET Framework
受以下版本支持:2.0、1.1、1.0