ASP.NET

27.C# ASP.NET - PlaceHolder [WebStandardControl]

Godffs 2009. 10. 8. 10:21
반응형

PlaceHolder(다리표시자)

- Listeral : 텍스트가 들어올 자리(Text, Html)

- PlaceHolder : 서버 컨트롤이 들어올 자리(컨트롤)

  - 동적으로 사용, 컨트롤 작성시 사용


FrmPlaceHolder.aspx

<div>

   텍스트/HTML 들어올자리 :

   <asp:Literal ID="Literal1" runat="server"></asp:Literal>

  

   <hr />

  

   서버컨트롤이 들어올자리 :

   <asp:PlaceHolder ID="PlaceHolder1" runat="server">

   </asp:PlaceHolder>

   <br />

  

   <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

  

   <hr />

  

   <asp:Button ID="btnGetText" runat="server"

       Text="동적버튼의 텍스트를 읽어오자."

       onclick="btnGetText_Click" />

</div>


FrmPlaceHolder.aspx.cs

protected void Page_Load(object sender, EventArgs e)

{

   this.Literal1.Text = "안녕<br />방가<br />";

 

   // 동적으로 컨트롤 생성

   Button btn = new Button();

   // 버튼의 주요 속성 지정

   btn.ID = "btnClick";

   btn.Text = "클릭하세요.";

   // 이벤트 처리기 구현

   btn.Click +=

       //new EventHandler(btn_Click);

       delegate(object obj, EventArgs args)

       {

           this.Label1.Text = "무명메서드로 출력";

       };

   // 플레이스홀더에 추가

   this.PlaceHolder1.Controls.Add(btn);

 

   Label lbl = new Label();

   lbl.ID = "lblDisplay";

   lbl.Text = "동적으로 만들어진 레이블";

   this.PlaceHolder1.Controls.Add(lbl);

}

 

//void btn_Click(object sender, EventArgs e)

//{

//    this.Label1.Text = "버튼이 클릭되었습니다.";

//}

protected void btnGetText_Click(object sender, EventArgs e)

{

   // 플레이스홀더의 btnClick 개체를 찾아서

       //버튼 형태로 변환 Text 속성 요청

   Label1.Text = ((Button)this.PlaceHolder1

       .FindControl("btnClick")).Text;

 

   ((Label)this.PlaceHolder1.FindControl("lblDisplay")).Text =

       DateTime.Now.ToShortTimeString();

}


결과화면

[그림27-1]



반응형