다음을 통해 공유


방법: 웹 서버 컨트롤의 명명 컨테이너 멤버에 액세스

업데이트: 2007년 11월

컨트롤 명명 컨테이너의 속성이나 메서드에 액세스해야 할 경우가 있습니다. 예를 들어 데이터 바인딩을 수행하는 동안 명명 컨테이너는 컨트롤이 바인딩되는 데이터가 포함된 DataItem 속성을 사용 가능하도록 설정합니다. 컨텍스트에 따라 여러 가지 방법을 사용하여 상위 컨트롤에 액세스할 수 있습니다.

데이터 바인딩 식에서 명명 컨테이너에 액세스하려면

  • 컨테이너에 대한 참조를 반환하는 Container 키워드를 데이터 바인딩 식에 사용합니다. 그러면 컨테이너의 속성 또는 메서드에 액세스할 수 있습니다.

    이 키워드는 명명 컨테이너의 DataItem 개체에서 값을 가져오기 위해 Eval 메서드에 가장 일반적으로 사용되지만 이 메서드를 제외한 다른 곳에서도 사용할 수 있습니다. 다음 예제에서는 DataList, Repeater 또는 GridView 컨트롤에 대한 템플릿에 포함될 수도 있는 Label 컨트롤을 보여 줍니다. 여기에서는 현재 항목 번호 다음에 명명 컨테이너의 현재 Title 데이터 항목을 표시합니다.

    <asp:Label ID="Label1" >
    <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %>
    </asp:Label>
    
    <asp:Label ID="Label1" >
    <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %>
    </asp:Label>
    

    다음 예제는 이와 비슷하지만 명명 컨테이너의 DataItem 개체에서 값(Author 항목)을 가져옵니다.

    <asp:Label ID="Label2"  >
     <%# DataBinder.Eval(Container.DataItem, "Author") %>
    </asp:Label>
    
    <asp:Label ID="Label2"  >
     <%# DataBinder.Eval(Container.DataItem, "Author") %>
    </asp:Label>
    
    참고:

    NamingContainer 속성은 Parent 속성에서 참조하는 것과 동일한 컨트롤을 참조하지 않을 수도 있습니다. 예를 들어 Repeater 컨트롤의 경우 Label 컨트롤이 들어 있는 테이블이 포함된 항목 템플릿을 사용할 수도 있습니다. 레이블의 부모 컨트롤은 테이블 셀(예: HtmlTableCell 개체)이지만 Label 컨트롤의 네임스페이스를 정의하는 것은 테이블이 아니라 DataListItem이므로 명명 컨테이너는 DataListItem 개체입니다.

    다음은 속성 값을 가져오기 위해 위에 나와 있는 구문을 사용하는 전체 예제입니다.

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>Naming Container Example</title>
    </head>
    <body>
        <form id="form1" >
        <div>
            <asp:XmlDataSource ID="XmlDataSource1" 
    
                               XPath="Books/LanguageBooks/Book">
            <Data>
             <Books>
                <LanguageBooks>
                  <Book Title="Pure JavaScript" 
                        Author="Wyke, Gilliam, and Ting"/>
                  <Book Title="Effective C++ Second Edition" 
                        Author="Scott Meyers"/>
                  <Book Title="Assembly Language Step-By-Step" 
                        Author="Jeff Duntemann"/>
                  <Book Title="Oracle PL/SQL" 
                        Author="Steven Feuerstein"/>
                </LanguageBooks>
                <SecurityBooks>
                  <Book Title="Counter Hack" 
                        Author="Ed Skoudis"/>
                </SecurityBooks>
              </Books>
            </Data>
            </asp:XmlDataSource>
            <asp:GridView ID="GridView1" 
    
                          DataSourceID="XmlDataSource1" 
                          AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="Title" >
                        <ItemTemplate>
                            <asp:Label ID="Label1" >
                            <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Author">
                        <ItemTemplate>
                            <asp:Label ID="Label2"  >
                             <%# DataBinder.Eval(Container.DataItem, "Author") %>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </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">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>Naming Container Example</title>
    </head>
    <body>
        <form id="form1" >
        <div>
            <asp:XmlDataSource ID="XmlDataSource1" 
    
                               XPath="Books/LanguageBooks/Book">
            <Data>
             <Books>
                <LanguageBooks>
                  <Book Title="Pure JavaScript" 
                        Author="Wyke, Gilliam, and Ting"/>
                  <Book Title="Effective C++ Second Edition" 
                        Author="Scott Meyers"/>
                  <Book Title="Assembly Language Step-By-Step" 
                        Author="Jeff Duntemann"/>
                  <Book Title="Oracle PL/SQL" 
                        Author="Steven Feuerstein"/>
                </LanguageBooks>
                <SecurityBooks>
                  <Book Title="Counter Hack" 
                        Author="Ed Skoudis"/>
                </SecurityBooks>
              </Books>
            </Data>
            </asp:XmlDataSource>
            <asp:GridView ID="GridView1" 
    
                          DataSourceID="XmlDataSource1" 
                          AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="Title" >
                        <ItemTemplate>
                            <asp:Label ID="Label1" >
                            <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Author">
                        <ItemTemplate>
                            <asp:Label ID="Label2"  >
                             <%# DataBinder.Eval(Container.DataItem, "Author") %>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    

코드에서 명명 컨테이너에 액세스하려면

참고 항목

개념

Web Forms 컨트롤 식별

참조

데이터 바인딩 식 구문

기타 리소스

프로그래밍 방식으로 ASP.NET 컨트롤 액세스