지난 강좌에서는 WebPartZone에 ASP.NET 서버 컨트롤을 배치해 보고 페이지를 실행 해 보았습니다. “최소화”와 “복원” 등 웹파트에서 제공한 커스터마이징 기능을 확인해 보았구요. WebPartZone에 ASP.NET 서버 컨트롤을 배치하면 실행 시에 GenericWebPart가 생성되고 이 것이 ASP.NET 서버 컨트롤을 가지는 것이라는 것을 얘기했습니다.

이번에는 코드에서 직접 컨트롤들을 접근해 보도록 하겠습니다.


WebPartZone에 있는 컨트롤에 접근하기


지난 강좌에서 실습했던 FirstWebPartsSites를 실행해 보면 WebPartZone1에 있는 텍스트 박스와 버튼에 대한 타이틀이 각가 “제목 없음[1]”, “제목 업음[2]”로 되어 있습니다. 타이틀이 별로 마음에 들지 않습니다. 타이틀을 바꾸어 보도록 하겠습니다.



타이틀을 바꾸는 방법은 두 가지 방법이 있습니다.

첫 번째 방법은 HTML 소스 코드에서 서버 컨트롤에 Title 속성을 추가하는 것입니다.


<asp:WebPartZone ID="WebPartZone1" runat="server" style="z-index: 100; left: 19px; position: absolute; top: 83px" HeaderText="검색 Width="125px">

    <ZoneTemplate>

        <asp:TextBox ID="TextBox1" runat="server" Title="검색">

        </asp:TextBox>

        <asp:Button ID="Button1" runat="server" Text="Button" Title=" " />

    </ZoneTemplate>

</asp:WebPartZone>


Title 속성의 경우는 Visual Studio의 디자인 뷰에서 속성창을 이용해 설정할 수가 없습니다. 하는 수 없이 디자인 뷰를 이용하지 않고 소스뷰에서 직접 Title 에트리뷰트를 쳐 넣어야 합니다.

페이지를 실행하면 그림과 같이 WebPart의 Title이 바뀌었음을 확인할 수 있습니다.



타이틀을 바꾸는 두 번째 방법은 소스 코드에서 해당 WebPartZone의 WebParts 속성을 이용하는 방법입니다. WebParts 속성은 WebPartsCollection 컬렉션 형식입니다.


protected void Page_Load(object sender, EventArgs e)

{

    this.WebPartZone1.WebParts[0].Title = "검색

    this.WebPartZone1.WebParts[1].Title = " "

}


다른 컬렉션 형식과 마찬가지로 컨트롤의 이름으로 접근을 하여도 됩니다. 이름은 컨트롤의 id 값을 말합니다.


protected void Page_Load(object sender, EventArgs e)

{

    this.WebPartZone1.WebParts["TextBox1"].Title = "검색

    this.WebPartZone1.WebParts["Button1"].Title = " "

}


컬렉션의 각 항목(item)들은 WebPart 형식입니다. 따라서 아래와 같이 풀어서 사용해도 됩니다.


protected void Page_Load(object sender, EventArgs e)

{

    WebPart TextBoxWebPart = this.WebPartZone1.WebParts["TextBox1"];

    TextBoxWebPart.Title = "검색

    WebPart ButtonWebPart = this.WebPartZone1.WebParts["Button1"];

    ButtonWebPart.Title = " "

}


+ Recent posts