다음을 통해 공유


Page.FindControl(String) 메서드

정의

지정된 식별자를 사용하여 서버 컨트롤의 페이지 명명 컨테이너를 검색합니다.

public:
 override System::Web::UI::Control ^ FindControl(System::String ^ id);
public override System.Web.UI.Control FindControl (string id);
override this.FindControl : string -> System.Web.UI.Control
Public Overrides Function FindControl (id As String) As Control

매개 변수

id
String

찾을 컨트롤의 식별자입니다.

반환

지정된 컨트롤이나 null을 반환합니다.

예제

다음 코드 예제를 사용 FindControl 하는 방법에 설명 합니다 템플릿 내에서 컨트롤을 찾는 방법입니다. 이 예제에서는 두 개의 Repeater 컨트롤이 정의됩니다. 각 컨트롤은 리피터 항목 템플릿 내에서 의 LinkButton 이벤트를 catch Click 하는 다른 방법을 보여 줍니다.

<%@ 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("RepeaterObject1"));
      al.Add(new RepeaterObject("RepeaterObject2"));
      al.Add(new RepeaterObject("RepeaterObject3"));
      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("Label1");
      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("Label1");
    if (l != null)
    {
      l.Text = "text changed in handler";
      l.ForeColor = System.Drawing.Color.Red;
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<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="Label1" 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="Label1" Text='<%#Eval("RepeaterLabel")%>' />&nbsp;
                <asp:LinkButton Text="Change" runat="server" /> <br />
            </ItemTemplate>
        </asp:Repeater>
    </asp:Panel>

    </div>
    </form>
</body>
</html>
<%@ 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("RepeaterObject1"))
      al.Add(New RepeaterObject("RepeaterObject2"))
      al.Add(New RepeaterObject("RepeaterObject3"))
      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("Label1"), 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("Label1"), 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 xmlns="http://www.w3.org/1999/xhtml" >
<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="Label1" 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="Label1" Text='<%#Eval("RepeaterLabel")%>' />&nbsp;
                <asp:LinkButton ID="LinkButton2" Text="Change" runat="server" /> <br />
            </ItemTemplate>
        </asp:Repeater>
    </asp:Panel>

    </div>
    </form>
</body>
</html>

설명

메서드를 FindControl 사용하여 디자인 타임에 사용할 수 없는 컨트롤 ID 에 액세스할 수 있습니다. 메서드는 페이지의 직접 또는 최상위 컨테이너만 검색합니다. 페이지에 포함된 컨테이너 이름 지정에서 컨트롤을 재귀적으로 검색하지 않습니다. 하위 명명 컨테이너의 컨트롤에 액세스하려면 해당 컨테이너의 메서드를 FindControl 호출합니다.

적용 대상

추가 정보