-
Web Forms 컨트롤 ID 확인.NET/ASP.NET 2009. 2. 23. 03:49반응형
Web Forms 컨트롤 ID 확인업데이트: 2007년 11월
웹 서버 컨트롤에 프로그래밍 방식으로 액세스할 수 있도록 해당 컨트롤에 대해 ID 특성을 선언하는 경우 ASP.NET 페이지 프레임워크에서는 사용자가 선언하는 ID가 전체 ASP.NET 웹 응용 프로그램에서 고유한 상태가 되도록 자동으로 확인합니다.
명명 컨테이너ASP.NET 페이지 프레임워크에서는 INamingContainer 인터페이스를 통해 응용 프로그램에 자동 컨트롤 ID 확인 기능을 제공합니다. 이 인터페이스는 자신을 구현하는 각 클래스에 대해 명명 컨테이너를 생성합니다. 명명 컨테이너는 ASP.NET 웹 페이지 컨트롤 계층 내에 새 ID 네임스페이스를 정의합니다. 그런 다음 페이지 프레임워크에서는 이 네임스페이스에서 생성된 각 Control 개체의 UniqueID 속성에 대한 값을 생성할 수 있습니다. UniqueID 속성은 컨트롤의 정규화된 식별자라는 점에서 사용자가 선언하는 ID 속성과 다릅니다.
INamingContainer를 구현하는 클래스에는 Page, DataList, GridView, DataListItem, DataGridItem 및Repeater 등이 있습니다. 일반적으로 자식 컨트롤을 동적으로 만들 수 있는 컨트롤은 INamingContainer를 구현합니다.
Page 클래스는 해당 페이지의 컨트롤 계층에 대한 최상위 명명 컨테이너로 사용됩니다.
데이터 바인딩 시나리오에서 이름 확인페이지 프레임워크에서 제공하는 자동 이름 확인 기능은 데이터 바인딩 시나리오에서 중요합니다. 페이지에 선언된 컨트롤을 보여 주는 다음 예제를 참조하십시오.
C#<asp:Repeater id="MyDataList" runat="server"> <ItemTemplate> <asp:Label id="MyLabel" Text="<%# Container.ToString() %>" runat="server"/><br /> </ItemTemplate> </asp:Repeater> <hr /> <asp:Label id="ResultsLabel" runat="server" AssociatedControlID="MyDataList"/>
Label 컨트롤이 데이터 소스에 바인딩되어 있고 Repeater 컨트롤이 이 데이터 소스의 항목을 반복할 경우에는 각 인스턴스의 ID를 모두 MyLabel로 할당했더라도 페이지에서 Label 컨트롤의 여러 인스턴스를 프로그래밍 방식으로 구별할 수 있어야 합니다. 페이지 프레임워크에서는 각 컨트롤의 정규화된 UniqueID 속성을 사용하여 이를 수행합니다. 예를 들어 다음 코드에서는 세 가지 버전의 Label 컨트롤을 생성하고 UniqueID 속성 값을 페이지에 작성합니다.
C#<script language="c#" runat="server"> void Page_Load(Object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append("Container: " + MyDataList.NamingContainer.ToString() + "<p>"); ArrayList a = new ArrayList(); a.Add("A"); a.Add("B"); a.Add("C"); MyDataList.DataSource = a; MyDataList.DataBind(); for (int i = 0; i < MyDataList.Controls.Count; i++) { Label l = (Label)((RepeaterItem)MyDataList.Controls[i]).FindControl("MyLabel"); sb.Append("Container: " + ((RepeaterItem)MyDataList.Controls[i]).NamingContainer.ToString() + "<p>"); sb.Append("<b>" + l.UniqueID + "</b><p>"); } ResultsLabel.Text = sb.ToString(); } </script>
반응형'.NET > ASP.NET' 카테고리의 다른 글
App_Code Subfolder Configuration Problem app_Code 안에서 서브 폴더 접근 (0) 2009.05.15 배포용 ASP.NET 웹 사이트를 미리 컴파일하려면 (0) 2009.05.13 ASP.NET 값넘기기~!!!! 쿼리스트링 Request ViewState 값넘기기 예 (0) 2009.02.24 ASP.NET 팝업창의 iframe에서 parent.opener의 iframe안의 textbox에 접근하기 iframe (0) 2009.02.23 ASP.NET 웹 페이지 스스로 닫기 자바스크립트 에러날때 웹 페이지 닫기 버튼 어트리뷰 (0) 2009.02.23 ASP.NET 웹 페이지 간에 값 전달 <%@ PreviousPageType VirtualPath="~/AppvLine.aspx" %> (0) 2009.02.18 13. 마지막 클래스를 dll로 변환하기 (0) 2009.02.06 06. 답변형게시판도 만들자 - 공통클래스 작성 (0) 2009.02.06