상세 컨텐츠

본문 제목

ASP.NET 표준 컨트롤

Web Development

by thankee 2008. 1. 3. 01:20

본문

ASP.NET표준컨트롤에 대한 간단한 설명과, 특이한 속성에 대해서 언급하겠습니다.
ASP.NET에서 표준 컨트롤이란 서버컨트롤 중에서 일반적으로 많이 쓰이는 기본적인 컨트롤들을 말합니다. 예를들어 TextBox, Button, ListBox 것들이 표준컨트롤로서 제공되고 있습니다.

1. Label : Aspx파일에서는 <asp:Label>이지만 Html로 변경되면 <span>태그로 대체되는 속성입니다. Label의 테두리 모양, 글자 속성, 전경색, 배경색 등을 지정할 수 있고 해당 변경사항은 모두 Html에서는 css로 대체됩니다. Text속성으로 Label에 표시되는 텍스트를 변경할 수 있습니다.

2. Literal : Label과 거의 동일하지만,  Html출력 시 <span>태그로 출력되는 Label과 달리 Literal은 텍스트만 출력됩니다. Label은 <sapn>태그로 할 수 있는 모든 것을 할 수 있지만(Css로 텍스트를 꾸밀 수 도 있고, 자바스크립트로 조작도 가능), Literal은 단순히 텍스트 출력기능만 가능합니다.

3. TextBox : HTML의 <input type="text">, <input type="password">, <textarea> 등의 컨트롤을 TextBox 표준 컨트롤로서 제공하고있습니다. 이벤트는 텍스트가 변경이 있을 경우 실행되는 TextChanged이벤트가 있습니다. 속성 중 AutoPostBack와 Warp, AutoCompleteType의 기능은 다음과 같습니다.
  • AutoPostBack : 클라이언트에서 해당 컨트롤의 값이나 상태를 변경시켰을 경우, 자동으로 PostBack(다시 게시)가 이루어지는가의 여부에 대한 설정입니다. TextBox의 AutoPostBack가 True로 설정될 경우, 텍스트가 바뀔때 마다 자동으로 Submit되어 서버로 변경사항이 전송됩니다.
  • AutoCompleteType : IE에서 제공하는 자동완성기능에 대한 설정입니다. 자동완성을 사용하고 싶지 않다면 Disabled로 하면됩니다.
  • Warp : TextBox컨트롤보다 긴 내용의 텍스트를 입력할 시에 자동으로 줄바꿈되어 보일지 여부를 결정합니다. True로 설정하고, TextMode가 MultiLine일 경우, 긴 텍스트를 입력하면 자동으로 줄바꿈되는 것을 볼 수 있습니다.
4. Button : Html의 <input type="submit">에 해당하는 표준 컨트롤입니다. Click이벤트가 있습니다. Button컨트롤의 몇 가지 속성을 나열하면 다음과 같습니다.
  • PostBackUrl : 게시될 페이지를 설정하는 것입니다. 이 값을 설정하면, 버튼을 클릭할 시 해당 페이지로 바로 이동하게 됩니다. Response.Redirect()나 <a href="">로 페이지 이동한 것과 다르게 PreviousPage객체를 이용하여 이전 페이지의 컨트롤이나, Field, Property값 등을 참조할 수 있게 됩니다. 따라서 PostBackUrl로 페이지를 이동하는 것은 PreviousPage를 사용하기 위한 방법 중 하나라는 의미입니다. PostBackUrl을 이용하면 버튼이 포함되어 있는 페이지의 어떠한 다른 이벤트도 수행되지 않고 바로 다음 페이지로 전환됩니다.
     아래는 PreviousPage를 이용하는 방법을 요약한 것입니다.(PreviousPage객체를 이용하는 것은 ASP.NET에서 페이지간 데이터 전송 방법 중 하나입니다.)
    - 이전페이지 : A.aspx
    - 목표페이지 : B.aspx

    1. A.aspx에 버튼하나와, 텍스트 박스 하나를 생성하고, 버튼의 PostBackUrl속성을 B.aspx파일로 설정합니다.
    2. A.aspx.cs에 public field와 property를 하나 씩 생성합니다.
    public partial class A : System.Web.UI.Page
    {
        //반드시 public여야 다음페이지에서 참조가능합니다.
        public int x = 100;   //Field의 정의
        public string getText//Property의 정의
        {
           get
           {
              return this.TextBox1.Text;
           }
        }
        ...
    3. B.aspx파일의 최상단에 다음과 같이 라인을 추가합니다.
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
    //VirtualPath에 이전 페이지 이름을 명시합니다.
    <%@ PreviousPageType VirtualPath="~/A.aspx" %>
    4. B.aspx.cs파일로 이동하여 다음과 같이 필요한 곳에서 이전페이지를 참조 할 수 있습니다.
    if (PreviousPage != null) //PreviousPage가 존재한다면..(예외처리(try catch도 좋습니다))
    {
        //Property나 Field값은 바로 참조 가능
        Response.Write(PreviousPage.x + "<br>");
       Response.Write(PreviousPage.getTxt + "<br>");
        //컨트롤의 경우 아래와 같이 FindControl()을 사용하여야 합니다.
        TextBox tb = (TextBox)PreviousPage.FindControl("TextBox1");
        if(tb != null)
            Response.Write(tb.Text);
    }
    * 예외상황에 대한 처리는 필수라고 생각합시다.
  • Text : 이 속성을 지정하면, 버튼에 나타날 문자를 지정할 수 있습니다.
  • CssClass : 이 속성을 지정함으로서 Css를 적용 할 수 있습니다. Html로 출력될 시 Style속성이 아닌 Class 속성의 값으로 적용되므로, 사용 시 주의하도록 합시다.
  • OnClientClick : OnClick이벤트로 발생할 스크립트를 지정해 줄 수 있습니다.
  • UseSubmitBehavior : Html로 출력 시, 버튼의 type를 Submit로 할 것인지, Button으로 할것인지 지정할 수 있습니다. True의 경우 <input type="submit">로 버튼이 생성되며, False의 경우 <input type="button">으로 생성되며 자바스크립트로 클릭시 페이지가 전송되도록 구현됩니다.
5. LinkButton : 버튼의 작동이나 역할이 대부분 Button과 같습니다. <a href="">태그로 대체되며, Button과 동작방식이 동일하도록 이루어져 있으므로, 속성도 거의 동일합니다. 링크는 텍스트로 표시됩니다.

6. ImageButton : 이미지로 Button의 기능을 구현한 것일 뿐 대부분 Button과 동일합니다. <input type="image">로 대체 됩니다.
  • DescriptionUrl : 이미지의 설명을 담고 있는 파일을 지정합니다. 이 속성은 HTML태그로 출력될 때 LONGDESC 속성으로 대체됩니다. LONGDESC 속성은 태그상으로 존재하는 것으로 페이지에 특별한 영향을 미치지 않습니다.
  • ImageUrl : 나타날 이미지를 지정하는 속성입니다.
  • ALternateText : 이미지가 출력되지 않았을 때, 대신에 나타날 텍스트를 지정하는 속성입니다.
7. HyperLink : 마찬가지로 <a href="">태그로 대체되지만, LinkButton과 동작방식이 다릅니다. PostBackUrl속성도 사용하지 못하며, 사용자가 <a href="주소">라고 입력한 것과 동일합니다.(LinkButton은 <a href="자바스크립트">로서 내부적으로 다른 방식으로 작동합니다.). 링크로 텍스트 또는 이미지를 사용할 수 있습니다. 이 컨트롤은 내부링크로의 이동이 아닌 단순히 외부 페이지의 링크를 표현할 때 유용합니다. 이벤트는 존재하지 않습니다.

8. Image : <img src="">태그로 대체 가능합니다. 단순히 이미지의 표시 기능을 가집니다. 이벤트는 존재하지 않습니다.

9. Table : Html로 출력될 때 <table>태그로 출력됩니다. 하지만 aspx파일에서는 보다 깔끔하게 다른 방식으로 표현이 됩니다.
<asp:Table ID="Table1" runat="server" Height="115px" Width="125px"> //테이블 정의
    <asp:TableRow runat="server"> //행 정의
        <asp:TableCell runat="server">1행 1열</asp:TableCell> // 열정의
        <asp:TableCell runat="server">1행 2열</asp:TableCell>
    </asp:TableRow>
    <asp:TableRow runat="server"> //두번째 행 정의
        <asp:TableCell runat="server">2행 1열</asp:TableCell> // 열정의
    </asp:TableRow>
</asp:Table>
 물론 프로그래머가 위의 코드를 모드 입력해서 테이블을 생성하는 것은 아닙니다. Rows속성을 보면 테이블을 GUI환경으로 구성할 수 있도록 버튼을 제공하고 있습니다. 테이블에 제공되는 이벤트는 없습니다.
 테이블을 ASP.NET만의 컨트롤로서 제공되어 얻을 수 있는 가장 큰 이점은 테이블을 동적으로 추가, 수정, 삭제가 가능하다는 것입니다.
1. 열(Cell)추가
    TableCell tc = new TableCell();
    tc.Text = "내용";
    this.테이블명.Rows[인덱스].Add(tc); //셀추가, 인덱스는 0부터 시작
    //AddAt(index, TableCell); - 원하는 지점에 추가
    //AddRange(TableCell[]); - TableCell객체로 구성된 배열을 추가
2. 열수정
    this.테이블명.Rows[인덱스].Cells[인덱스].Text = "내용"; //text뿐만아니라 다른 속성으로 수정 가능
3. 행(Row)추가
    TableRow tr = new TableRow();
    TableCell tc1 = new TableCell();
    TableCell tc2 = new TableCell();
    tc1.Text = "셀1내용";
    tc2.Text = "셀2내용";
    tr.Cells.Add(tc1);
    tr.Cells.Add(tc2);
    this.테이블명.Rows.Add(tr); //행추가와 마찬가지로 AddAt, AddRange메서드를 지원한다.
4. 행수정
    //BackColor뿐만아니라 다른 속성으로 행 수정가능
    this.테이블명.Rows[인덱스].BackColor = System.Drawing.Color.Violet;
5. 행 또는 열 삭제
    //모든 요소 삭제
    this.테이블명.Rows[인덱스].Cells.Clear(); //열삭제
    this.테이블명.Rows.Clear();                     //행삭제
    //특정 요소 삭제
    this.테이블명.Rows[인덱스].Cells.Remove(특정TableCell객체); //객체에 해당하는 요소 삭제
    this.테이블명.Rows.Remove(특정TableRow객체);
    this.테이블명.Rows[인덱스].Cells.RemoveAt(인덱스);               //인덱스에 해당하는 요소 삭제
    this.테이블명.Rows.RemoveAt(인덱스);


10.ImageMap : Html에서 제공하는 이미지 맵을 안다면 이 컨트롤에 대해서도 쉽게 이해하실 수 있을 겁니다. Html에서는 하나의 이미지에 구역들을 지정하고 그 구역마다 링크를 걸수 있는 ImageMap기능을 제공하는데, 그 기능이 ASP.NET에서 컨트롤로 제공하는 것입니다.
  • DescriptionUrl : 이미지의 설명을
  • HotSpotMode : 이미지맵에서 지정한 영역을 클릭할 경우 발생하는 동작을 미리 지정하는 것입니다. HotSpot컬렉션 설정의 HotSpotMode와 중복 설정된 경우 ImageMap의 HotSpotMode보다 HotSpot컬렉션의 hotSpotMode의 설정이 우선하게 됩니다.
    * NotSet : 아무 설정도 지정하지 않습니다. HotSpot컬렉션의 HotSpotMode역시 NotSet로 지정된 경우 지정된 영역(HotSpot)을 클릭하면 지정된 NavigateUrl로 페이지 이동을 시도할 것입니다.
    * Inactive : 아무 행동도 하지 않도록 합니다.
    * Navigate : HotSpot컬렉션의 NavigateUrl속성에 지정된로 페이지 이동을 시도합니다. NavigateUrl이 지정되지 않은 경우, 서버의 페이지 목록이 출력되므로 유의합니다.
    * PostBack : HotSpot를 클릭하면 PostBack(다시게시) 하도록 설정합니다.
  • HotSpot : ImageMap의 영역(HotSpot)과, 영역을 클릭했을 때 행동을 손쉽게 지정할수 있도록 GUI환경을 제공합니다.

11. BulletedList : 글머리 기호가 있는 리스트를 표현할 수 있도록 Html에서 제공하는 <ul>, <li>태그에 해당합니다. 손쉽게 GUI환경으로 리스트를 관리할 수 있으며, 데이터베이스의 내용이 리스트로 출력될 수 있도록 연동하는 기능도 제공합니다.
  • BulletStyle : 글머리 기호의 형태를 지정합니다.
  • BulletImageUrl : BulletStyle를 CustomImage로 설정할 경우, 글머리 기호를 이미지로 대체할 수 있는데, 그 때 나타날 이미지를 지정하는 속성입니다.
  • DisplayMode : 리스트를 일반텍스트, 링크 또는 버튼의 기능을 할 수 있도록 설정하는 속성입니다. HyperLink로 설정할 경우, Url은 각각의 리스트마다 지정할 수 있는 Value값으로 지정됩니다.
  • Target : DisplayMode가 HyperLink로 설정된 경우, Target을 지정하는 속성입니다.
  • Items : 컬렉션으로서 GUI환경으로 리스트를 관리할 수 있도록 도와줍니다.
  • DataSourceID : 데이터소스를 지정합니다. 여기서 지정된 데이터소스의 값이 리스트에 출력될 수 있게됩니다.
  • DataTextField : 리스트로 출력될 열(Column)을 지정합니다.
  • DataValueField : 리스트의 Value에 해당하는 열(Column)을 지정합니다.

12. DropDownList : 드롭다운리스트를 제공하기 위해 Html에서 사용했던 <select><option>태그와 같은 기능을 합니다. BulletedList와 마찬가지로 리스트를 GUI환경으로 쉽게 구성할 수 있으며, DB의 내용이 리스트로 출력될 수 있도록 연동하는 기능 역시 제공됩니다.
  • AutoPostBack : true로 설정될 경우, 항목을 변경하는 선택을 할 때마다 자동으로 PostBack(다시게시)됩니다.

13. ListBox : 기본적으로 펼쳐진 형태의 DropDownList로 볼 수 있으며, 다중 선택등을 지원합니다. 대부분의 속성은 DropDownList와 동일합니다.
  • Rows : 리스트에서 기본적으로 나타날 행 숫자입니다.
  • SelectionMode : Single와 Multiple 둘 중에 하나의 값을 선택할 수 있으며, 다중 선택 지원여부를 결정하는 속성입니다.

14. CheckBox : 개별 체크박스를 지원하는 컨트롤로서 체크 여부등 단순한 기능을 지원합니다. CheckedChanged 이벤트를 발생 시킵니다.

15. CheckBoxList : CheckBox를 리스트로 출력하는 것으로서, 항목의 선택이 변경될 경우 SelectedIndexChanged 이벤트가 발생합니다.
  • RepeatDirection : 여러 체크박스리스트의 항목이 나열될 방향을 결정합니다.
  • RepeatColumns : 체크박스리스트를 나열할 때 사용되는 열의 개수입니다. 기본값은 0으로서 이 값이 설정되면 RepeatDirection속성 값이 Horizontal일 때의 형태인 가로로 나열되게 되며, 여기서 지정한 숫자 만큼 가로로 나열하고, 나머지 값은 다음 행으로 나열하게 됩니다.
  • RepeatLayout : Table일 경우 Html로 출력될 때 <table>태그로 출력되며, Flow이면 <table>태그 없이 표현됩니다.

16. RadioButton : 단일 라디오 버튼을 생성해주는, 단순한 기능을 제공하는 컨트롤입니다. CheckBox와 대부분 동일합니다.

17. RadioButtonList : CheckBoxList와 대부분 동일합니다. CheckBoxList는 여러 항목을 동시에 선택할 수 있는 반면에 RadioButtonList는 단일 항목만 선택이 가능합니다.

18. HiddenFiedl : Html의 <input type="hidden">에 해당하는, 눈에보이지 않는 컨트롤로서 특정 데이터를 클라이언트 측에 저장하고자 할 때 사용됩니다. 이 컨트롤로 데이터를 저장할 때 고려해야할 점은, 데이터가 Html 소스코드를 통해 그대로 노출된다는 점과 데이터의 양이 많을 경우 페이징 속도가 현저히 떨어진다는 점입니다. 반면에 쿠키와 마찬가지로 클라이언트에 데이터를 저장하는 것이므로, 서버의 속도에 영향을 거의 미치지 않는 다는 점과 사용자가 어느 브라우저를 이용하든, 브라우저 설정을 어떻게 하든 사용할 수 있다는 점은 장점이 되겠습니다.

19. Calendar : 달력기능을 웹으로 구현하기 위해 상당히 복잡하고 많은 양의 서버측, 클라이언트 측 스크립트가 필요했던 것에 비해서, ASP.NET는 하나의 컨트롤로서 손쉽게 사용할 수 있도록 제공하고 있습니다. 달력의 특정 날짜 선택이 변경되면 SelectionChanged이벤트를 발생시킵니다. 캘린더명.SelectedDate, 캘린더명.SelectedDates로서 현재 선택된 날짜들을 코드상으로 확인할 수 있습니다.
  • SelectionMode : 날짜선택, 주단위 선택, 달 전체 선택 가능 여부를 설정하는 속성입니다.
  • UseAccessibleHeader : true로 설정 될 경우, 달력의 헤더(요일부분)이 th태그로 표현되며, abbr속성이 사용되게 됩니다.  abbr속성 또는 <abbr>태그의 경우 특정 데이터에 대한 약어를 지정하는 것으로서, 다른 프로그램(색인 이나, 검색, 철자 점검 등의기능으로 활용되도록 할 수 있다.)이나 검색엔진이 이 데이터 값을 참조하게 할 수 있다고 합니다. flase로 설정하면 <td>태그로 표현되며, abbr속성이 지정되지 않습니다.
  • SelectedDate : 기본적으로 선택된 날짜를 설정하는 속성입니다.

20. AdRotator : 광고기능을 손쉽게 구현할 수 있는 컨트롤입니다. 광고들에 해당하는 데이터는 데이터소스나 xml파일을 이용하여 제공될 수 있습니다.
  • AdvertisementFile : 광고들에 관한 정보가 저장된 xml파일을 지정하는 속성입니다. xml파일은 다음과 같이 작성될 수 있습니다.
    <?xml version="1.0" encoding="utf-8" ?> <!--xml 정보 기술-->
    <Advertisements><!--Root Elements-->
       <Ad><!--첫번째 광고 정보 시작-->
          <ImageUrl>이미지 경로</ImageUrl>
          <NavigateUrl>페이지 경로</NavigateUrl>
          <AlternateText>이미지가 표시되지 않을 경우 표시될 텍스트</AlternateText>
          <Keyword>광고들을 키워드로 그룹화 합니다. KeywordFilter를 위해 필요합니다.</Keyword>
          <Impressions>빈도수</impressions>
       </Ad>
       <Ad><!--두번째 광고 정보 시작-->
           .....
       </Ad>
    </Advertisements>
  • DataSourceID : Xml파일 대신 데이터 소스로서 광고 정보를 지정합니다. 이 때 데이터소스의 각 Column명을 AdRotator의 AlternateTextField, NavigateUrlField, ImageUrlField속성과 일치 시켜야합니다.
  • AlternateTextField : 광고 이미지가 표시되지 않을 때 나타날 텍스트 정보가 있는 Element이름 또는 Column이름입니다. Xml파일의 Element이름이나 데이터소스의 Column명과 일치시킬 필요가 있습니다.
  • ImageUrlField : 광고 이미지의 주소입니다. Xml파일의 Element이름이나 데이터소스의 Column명과 일치시킬 필요가 있습니다.
  • NavigateUrlField : 광고를 클릭했을 때 연결될  페이지 경로입니다. Xml파일의 Element이름이나 데이터소스의 Column명과 일치시킬 필요가 있습니다.
  • KeywordFilter : 여기서 지정한 텍스트와 일치하는 Keyword를 가지는 광고만 출력되게 됩니다.

21. FileUpload : 클라이언트 측에서 파일을 서버로 업로드하고자 할 때 사용되는 컨트롤입니다. Html의 <input type="file">과 같으며 이 컨트롤에 특별히 제공되는 이벤트는 없습니다. 파일을 실제로 업로드하기 위해서는 다음과 같은 구문이 다른 컨트롤 또는 이벤트에 의해서 실행되어야 합니다.(FileUpload컨트롤은 HasFile, SaveAs(), FileName 등을 이용하여 파일을 서버에 저장할 수 있도록 지원합니다.)
if(파일업로드컨트롤명.HasFile) //파일업로드 컨트롤에 파일 경로가 지정되어 있다면
    파일업로드컨트롤명.SaveAs("경로" + 파일업로드컨트롤명.FileName); //파일을 서버에 저장한다.

22. Wizard : 진행 순서가 있는 작업을 단계적으로 진행시키고자 할 때, 적절한 컨트롤입니다. 템플릿을 통한 편집 기능을 통해 개발자가 보다더 유연하게 Wizard컨트롤을 개발할 수 있도록 지원하고 있습니다.
  • ActiveStepIndex : 활성화되어있는 단계 번호 입니다. 0부터 시작합니다. 이 속성을 설정하거나 참조함으로서 현재 작업 중인 단계를 설정하거나, 현재 작업 중인 단계를 알 수 있습니다.
  • CancelDestinationPage : 취소 버튼을 클릭했을 때, 전환되는 페이지의 URL을 지정하는 속성입니다. Redirect로서 페이지 전환됩니다.
  • FinishDestinationPage : 모든 단계를 끝냈을 때, 전환되는 페이지의 URL을 지정하는 속성입니다. Redirect로서 페이지 전환됩니다.
  • WizardSteps : 컬렉션으로서 GUI환경으로 단계를 추가하고, 수정할 수 있도록 지원합니다.
  • StepType : WizardStep편집기 창에 존재하는 속성입니다.
    * Auto : 해당 단계의 타입을 자동 설정합니다.
    * Start : 해당 단계를 시작 단계로 설정합니다. 예로 다음버튼은 존재하지만 이전버튼은 존재하지 않게 되는 것입니다.
    * Finish : 해당단계가 마침 단계가 됩니다. 예로 이전버튼과 마침버튼이 제공됩니다.
    * Complete : 해당 단계를 완료된 단계로 설정합니다. 예로 해당 단계를 완료된 단계로 보고 해당 단계로 진입할 수 없도록 설정됩니다.
  • AllowReturn : WizardStep편집기 창에 존재하는 속성으로 이전 단계로 돌아갈 수 있도록 허용 여부를 설정할 수 있습니다. False로 설정하면, 해당 단계에서 이전으로 돌아갈 수 없게됩니다.
  • DisplayCancelButton : 취소 버튼을 출력할지 여부를 설정할 수 있습니다.
  • DisplaySideBar : 각 단계를 출력하는 하는 SideBar를 보일지, 보이지 않게 할 지 설정할 수 있습니다.
  • 다음은 지원하는 이벤트 목록입니다.
    * 이벤트 : onnextbuttonclick, onpreviousbuttonclick    
       매개변수 : (object sender, WizardNavigationEventArgs e)    
       설명 : 이전, 다음 버튼을 클릭했을 시 호출되는 이벤트입니다.
    * 이벤트 : onfinishbuttonclick 
       매개변수 : (object sender, WizardNavigationEventArgs e) 
       설명 : 마침 버튼을 클릭했을 시 호출되는 이벤트입니다.
    * 이벤트 : oncancelbuttonclick 
       매개변수 : (object sender, EventArgs e)
       설명 : 취소 버튼을 클릭했을 시 호출되는 이벤트입니다.
    * 이벤트 : OnActiveStepChanged
       매개변수 : (object sender, EventArgs e)
       설명 : 새로운 단계로 전환될 때마다 호출되는 이벤트입니다.
    * 이벤트 : onsidebarbuttonclick
       매개변수 : (object sender, WizardNavigationEventArgs e)
       설명 : 사이드바를 클릭했을 시 호출되는 이벤트 입니다.

23. Xml : xml페이지를 출력하기 위해 사용되는 컨트롤입니다. xml파일과 출력을 위한 xsl파일을 설정하면, 해당 컨트롤 위치에 지정한 페이지가 출력됩니다.
  • DocumentSource : xml파일의 경로입니다.
  • TransformSource : xsl파일의 경로입니다.

24. MultiView : View 컨트롤과 함께 사용됩니다. View컨트롤은 MultiView컨트롤 내부에만 생성될 수 있는데, MultiView는 내부에 존재하는 View중에서 지정한 View컨트롤만 화면에 출력되게 설정 할 수 있습니다. MultiView컨트롤의 ActiveViewIndex를 설정함으로서(0부터 시작) 나타날 뷰를 설정합니다.

25. Panel : Div태그로 대체되는 컨트롤입니다.
  • GroupingText : 테두리로 <Div>태그에 포함된 컨트롤들이나 내용들을 감싸게 하며, 그 테두리의 제목 처럼 출력되는 문자열을 지정합니다.
  • DefaultButton : 패널을 활성화한 상태에서 특정 키를(Enter키) 눌렀을 경우, 눌려지는 기본 버튼을 지정합니다.

26. PlaceHolder : 특정 위치에 동적으로 웹페이지에 컨트롤들을 추가하고자 할 경우, PlaceHolder컨트롤이 사용될 수 있습니다. Panel과 마찬가지로 컨테이너로 동작하지만, Html코드 출력 시 Panel컨트롤은 Div태그를 생성하는 반면에, PlaceHolder컨트롤은 스스로 Html코드를 생성하지 않습니다. PlaceHolder에 컨트롤을 추가하기 위해서는 PlaceHolder컨트롤의 Controls컬렉션을 이용해야합니다.
PlaceHolder컨트롤명.Controls로서 컬렉션 사용가능.
다음은 Controls컬렉션에서 지원하는 메서드

Add(컨트롤); // 컨트롤을 추가합니다.
AddAt(int index, 컨트롤); //지정한 index에 컨트롤을 추가합니다.
Clear(); //컬렉션의 모든 컨트롤을 삭제합니다.
Remove(컨트롤); //지정한 컨트롤을 삭제합니다.
RemoveAt(int index) //index에 해당하는 컨트롤을 삭제합니다.
Count; //속성으로서 컬렉션에 포함되어있는 컨트롤의 수를 반환합니다.

다음은 기타 기능입니다.
PlaceHolder컨트롤명.Controls[int index]; //index에 해당하는 컨트롤에 참조합니다.
PlaceHolder컨트롤명.FindControl(string 컨트롤명);
//매개변수로 주어진 컨트롤을 찾아서 Object타입으로 반환합니다.

다음은 PlaceHolder에 컨트롤을 추가하는 예제입니다.
Button bt = new Button();
bt.ID = "버튼ID";
bt.Text = "버튼에 출력될 텍스트";
bt.Click += delegate(object sender, EventArgs e) //무명메서드로 이벤트설정
{
    //이벤트 내용
}
PlaceHolder명.Controls.Add(bt); //컨트롤 PlaceHolder에 추가

27. Localize : Literal컨트롤과 마찬가지로 순수한 텍스트를 출력하기 위한 컨트롤입니다. 이 컨트롤은 텍스트가 출력될 위치를 예약할 목적으로 사용될 수 있습니다. Listral컨트롤과 마찬가지로 Css를 적용할 수가 없습니다. Text속성을 이용하여 텍스트를 Localize위치에 동적으로 출력할 수 있습니다.

28. Substitution : ASP.NET에서 페이지가 처음 호출되면, 해당 페이지가 해석하여 반환하며 캐쉬에 저장되게 함으로서 페이지 반환속도를 향상시킬 수 있습니다.(<%@ OutputCache Duration="60" VaryByParam="None" %>코드를 aspx페이지 상단에 추가함으로서 페이지가 캐시되도록 할 수 있습니다.) 이 후로 해당 페이지가 요청되면 캐쉬에 저장되었던 해석된 페이지를 반환합니다. 하지만 매번 반환할 때마다 매번 새롭게 해석해서 반환해야되는 데이터가 포함된 페이지 일 경우, 해당 데이터 하나 때문에 페이지 전체가 매번해석되어야 하는 경우가 생갑니다. 이 경우 Substitution컨트롤을 이용, 페이지의 특정부분만 새롭게 해석되도록 할 수 있습니다.
 Substitution컨트롤의 MethodName속성에 정적 메서드를 할당하면, 페이지 캐쉬 여부와 상관없이 페이지가 로드 될 때마다 Substitution컨트롤은 해당 메서드를 실행하게 됩니다. 지정될 메서드는 다음의 규칙을 따라야 합니다.
  • string형을 반환해야합니다. 반환되는 string데이터가 Sbustitution컨트롤이 위치한 곳에 출력되게 됩니다.
  • 해당 메서드 내에서 Response.Write로 출력할 수 없습니다.
  • 해당 메서드 내에서 다른 컨트롤을 참조하거나, 값을 변경하는 행위는 할 수 없습니다.
  • 해당 메서드는 반드시 static로서 정적 메서드이여야 합니다.
  • 해당 메서드는 HttpContext객체를 매개변수로 받아야합니다. HttpContext를 통한 데이터 전달로서 메서드의 동작 수행을 결정하도록 할 수 있습니다.


by thankee from tistory.com

관련글 더보기