ASP.NET "Atlas" Server Controls가 무엇인지..? 그리고 ScriptManger 컨트롤이 무엇인지에 대해서는 이전 게시물(ASP.NET "Atlas" Sample Program #1)을 참고하기 바랍니다..
앞선 게시물에서 언급했습니다만.. ASP.NET "Atlas" Server Controls에는 다음과 같은 Controls & UI가 존재합니다.
(1) ScriptManager
(2) UpdatePanels
(3) Trigger
(4) Extenders
(5) Time Control
1. UpdatePanels
일반적인 ASP.NET 2.0 응용 프로그램에서, postback이 발생하면, 그 페이지 전체가 새로 렌더링됩니다. 페이지가 렌더링 되면 브라우저에서는 깜빡이는 현상이 발생하죠. postback이 진행되는 동안 서버에서는 페이지의 생명주기가 진행됩니다. 이것은 결국에 poskback을 발생시키고 이벤트 핸들러를 실행시키는 컨트롤 이벤트가 일어난 것을 말합니다.(예를 들어, 버튼 컨트롤의 클릭 핸들러 같은... )
ASP.NET "Atlas"의 UpdatePanel 컨트롤은 이러한 전체 페이지의 새로고침을 제거했습니다. (오우-_-) UpdatePanel 컨트롤은 페이지의 어떠한 부분을 담당(mark)하는데 사용되어 집니다. (그 어떠한 부분은 postback이 발생했을 때, 업데이트가 이루어질 부분..) 그러나, 그 부분은 UpdatePanel 컨트롤을 사용하게 되면, 클라이언트에서 전통적인 postback이 발생하지 않습니다. (즉, 페이지 전체가 새로고침 되지 않다는 것이죠.)
반면에 서버에서 페이지는 여전히 postback을 다루고 있으며, 정상적으로 작동하고 있습니다. (이벤트 핸들러를 발생시키는 것처럼) 하지만! 페이지의 렌더링 마지막 까지 오직 생성된 UpdatePanel 컨트롤에 의해 정의된 부분만 포스트백이 일어나는 것이죠~ (그렇군요..-_-) 이것을 부분적 렌더링이라고 합니다.
예제 코드 보기..
UpdatePanel 컨트롤은 ScriptManager 컨트롤(클라이언트의 ASP.NET "Atlas" script와 관련된 참조들과 부분적 렌더링 모델을 관리하기 위해..)을 필요로 합니다. ScriptManager 컨트롤은 부분적 페이지 업뎃을 관리하며, 오직 UpdatePanel 컨트롤과 거기에 속한 녀석들에 대한 렌더링만 허용합니다.
UpdatePanel 컨트롤은 컨텐츠를 위한 컨테이너(일반적으로 ASP.NET Server 컨트롤들)로 동작하는 ContentTamplate란 element를 포함하고 있습니다. ContentTemplate은 부분적으로 업뎃이 될 부분을 <ContentTemplate>란 태크로 감싸야합니다.
Mode 속성은 UpdatePanel 컨트롤이 자신에 속한 컨텐츠를 갱신할 때를 명시합니다. 만약, Mode 속성이 Always로 설정한다면, UpdatePanel에 속한 컨텐츠가 모든 postback 상황마다 갱신됩니다. 하지만, Mode 속성이 Conditional로 설정한다면, UpdatePanel은 서버 기반의 하나 또는 그 이상의 Triggers(또 다른 Server Controls 중 하나)에 의해 렌더링됩니다. (마치, 어떠한 특정 속성의 값이 변화하였다던지, 특정한 이벤트가 발생했을 때와 같이...)
UpdatePanel컨트롤과 함께 Trigger를 사용하기..
앞서 언급한 바와 같이 UpdatePanel컨트롤의 Mode 속성이 Conditional로 설정되어 있다면, 패널은 오직 Triggers에 대한 응답으로만 렌더링됩니다. UpdatePanel 컨트롤은 Triggers의 collection(한글로 바꾸자니 개념이 좀 애매해서.. 그냥 Triggers들의 멤버들 정도로..) 들을 포함합니다. Triggers에는 2가지 형태가 있습니다.
(a) ControlEventTrigger - 이 녀석은 페이지의 임의의 컨트롤(ControlID)에서 발생시키는 어떤 특정한 이벤트(EventName)와 연관되어 정의됩니다. 즉, 연관된 컨트롤에서 어떤 이벤트가 발생하면, 이 녀석은 "빵!"하고 UpdatePanel 컨트롤에 알려줍니다. 그러면 UpdatePanel 컨트롤은 서버의 페이지 부분에서 부분적으로 렌더링해야할 부분을 렌더링하게 될 것입니다.
예제 코드는 다음과 같습니당.
예제 코드 보기..
(b) ControlValueTrigger - 이 녀석은 페이지의 임의의 컨트롤(ControlID)의 특정한 속성(PropertyName)과 연관되어 정의됩니다. 즉, 연관된 컨트롤에서 그 특정한 속성의 값이 변할 경우, 이 녀석은 "빵!"하고 UpdatePanel 컨트롤에 알려줍니다. 그러면 UpdatePanel의 컨텐츠들은 postback이 진행되는 동안 새로 갱신될 것입니다.
예제 코드는 다음과 같습니당.
예제 코드 보기..
요약 정리.
이번 시간은 UpdatePanel 컨트롤과 Triggers란 녀석에 대해서 알아보았습니다. UpdatePanel 컨트롤은 자신의 태그 내에 포함된 컨텐츠들만 부분적으로 갱신을 가능하게 해주는 녀석입니다.(물론, ScriptManager에서 미리 정의해두어야 하지만.. 자세한 내용은 이전 글을 찾아보세요.)
UpdatePanel 컨트롤의 처리 방법에는 크게 2가지, Mode가 Always일 때와 Conditional 일 때, 2가지가 있는데, Always일 때는, postback이 발생할 때 마다 UpdatePanel의 컨텐츠들도 갱신하게 하였습니다.
반면에, Conditional일 때는 Triggers에 따라서 반응하게 하였죠! 어떤 컨트롤의 이벤트가 발생했을 때를 감지하여, UpdatePanel의 컨텐츠들을 갱신할 것인가?! 아니면! 어떤 컨트롤의 속성 값이 바뀌었을 대를 감지하여, UpdatePanel의 컨텐츠들을 갱신할 것인가로 구분되었습니다!
이 차이는 명확하게 알고 써야겠죠~
예제 소스 다운로드:
http://www.nohungry.net/Data/UpdatePanelControl.zip
출처:
(1) http://atlas.asp.net/docs/atlas/doc/controls/default.aspx#updatepanel
P.S.
이전 글에도 밝혔지만 오번역이 있을 수도 있으니, 보다 자세한 내용을 알고 싶으시다면 출처에 링크된 원문을 읽어보시기 바랍니다.
Trackback
Trackback Address :: http://www.nohungry.net/tt1/trackback/20

Comments
근데 내가 쓴 글이지만.. 정말 읽기 싫다.ㅋㅋ
나도...(s)를 누르게 된다..
머리가 아파오는 이 느낌-_-
하지만 이 글들은 누군가 검색엔진에서 ATLAS 등의 한글 문서를 검색할때 누군가에게 분명 유용하게 쓰일것이네-_-;;