.NET Framework 类库
Page.FindControl 方法 (String)

在页命名容器中搜索带指定标识符的服务器控件。

命名空间:System.Web.UI
程序集:System.Web(在 system.web.dll 中)

语法

Visual Basic(声明)
Public Overrides Function FindControl ( _
    id As String _
) As Control
Visual Basic(用法)
Dim instance As Page
Dim id As String
Dim returnValue As Control

returnValue = instance.FindControl(id)
C#
public override Control FindControl (
    string id
)
C++
public:
virtual Control^ FindControl (
    String^ id
) override
J#
public Control FindControl (
    String id
)
JScript
public override function FindControl (
    id : String
) : Control

参数

id

要查找的控件的标识符。

返回值

指定的控件,或为 空引用(在 Visual Basic 中为 Nothing)(如果指定的控件不存在的话)。
备注

FindControl 方法只搜索页的直接或顶级容器;它不在页所包含的命名容器中递归搜索控件。

示例

下面的代码示例演示如何使用 FindControl 方法在模板中定位控件。在此示例中,定义了两个 Repeater 控件;每个控件演示了一种不同的方法,这些方法用于在重复器项模板中捕捉 LinkButtonClick 事件。

Visual Basic
<%@ 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")%>' />&nbsp;
                <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")%>' />&nbsp;
                <asp:LinkButton ID="LinkButton2" Text="Change" runat=server /> <br />
            </ItemTemplate>
        </asp:Repeater>
    </asp:Panel>

    </div>
    </form>
</body>
</html>
C#
<%@ 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")%>' />&nbsp;
                <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")%>' />&nbsp;
                <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
请参见

标记 :


Page view tracker