재우니의 블로그


Placeholder 서버컨트롤에 User Control 바인딩할때 프로퍼티 값 할당하기


//user control 소스내용이며, 파일명은 WebUserControl.ascx 입니다.
// System.Web.UI.UserControl 를 상속받는다.
public partial class WebUserControl : System.Web.UI.UserControl
{
       //프로퍼티 설정
        public string Text
        {
            get
            {
                return TextBox1.Text;
            }
            set
           {
               TextBox1.Text = value;
           }
       }
}



위의 usercontrol 의 생성자에 접근하고 값을 전달 하는 방법을 aspx.cs 의 page_load 코드비하인드에서 어떻게 처리하는지
확인해 보겠습니다.


예시문 1)

       //user control 의 파일 경로로 UserControl 객체에 담는다.
        UserControl usercontrol = (UserControl)LoadControl("WebUserControl.ascx");

        //user control 형식을 가져온다. 
        Type controlType = usercontrol.GetType();
 
        //속성의 특성을 검색하고, 속성 메타데이터에 대해 엑세스 한다. 
        //여기서 "Text" 는 user control 에 존재하는 프로퍼티명 중 하나 이다. 속성의 타입은 string 형이다. 
        System.Reflection.Property
Info controlPropertyInfo = controlType.GetProperty("Text");

        //프로퍼티 속성의 type 을 알고, 거기에 맞게 값을 할당한다.
        controlPropertyInfo.SetVal
ue(usercontrol, "심재운 천재", null);

        //Placeholder 서버컨트롤에 바인딩 한다.
        this.PHClass.Controls.Add(usercontrol);


예시문 2)


WebUserControl ucWebUserControl = (WebUserControl)LoadControl("WebUserControl.ascx");
ucWebUserControl.Text = "심재운 천재";
this.PHClass.Controls.Add(ucWebUserControl);




두 가지의 예시문으로 접근이 가능합니다.


감사합니다.


posted by 심재운 (shimpark@gmail.com)