일단, Control Toolkit을 사용하기 위해서 반드시 필요한 ScriptManager나 Control Toolkit에 있는 ToolkitScriptManager를 form 태그 내부에 위치시킨다.
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1"runat="server">
모달창을 띄울 버튼을 생성한다.
모달찰의 역할을 할 패널을 생성한다.
<asp:Panel ID="pnlModalWindow"runat="server"CssClass="modalPopup">
<asp:Panel ID="pmwPnlTitle" runat="server">
올해 가장 재미있게 본 영화는?
</asp:Panel>
<div>
<div>
<input type="radio" id="rdoMovieList1" name="rdoMovieList"
value="Iron Man" checked="checked"onclick="selectedRadio(this)"/>
<label for="rdoMovieList1">Iron Man</label>
</div>
<div>
<input type="radio" id="rdoMovieList2" name="rdoMovieList"
value="Indiana Jones andthe Kingdom of the Crystal Skull"
onclick="selectedRadio(this)"/>
<label for="rdoMovieList2">Indiana Jones and
theKingdom of the Crystal Skull</label>
</div>
<div>
<input type="radio" id="rdoMovieList3" name="rdoMovieList"
value="Dark Night" onclick="selectedRadio(this)" />
<label for="rdoMovieList3">Dark Night</label>
</div>
<div>
<input type="radio" id="rdoMovieList4" name="rdoMovieList"
value="눈에는 눈 이에는 이" onclick="selectedRadio(this)" />
<label for="rdoMovieList4">눈에는눈 이에는 이</label>
</div>
</div>
<asp:Button ID="pmwBtnOk" runat="server" Text="OK" />
<asp:Button ID="pmwBtnCancel" runat="server" Text="Cancel" />
이제 pnlModalWindow를 표시하기 위해서 ModalPopupExtender의 속성을 정의하겠다.
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1"
runat="server"
TargetControlID="btnModalOpener"
PopupControlID="pnlModalWindow"
BackgroundCssClass="modalBackground"
DropShadow="true"
OkControlID="pmwBtnOk"
OnOkScript="onOK()"
CancelControlID="pmwBtnCancel"
OnCancelScript="onCancel()"
PopupDragHandleControlID="pmwPnlTitle"
TargetControlID에 btnModalOpener로 선언하여 모달창을 열기위한 버튼을 정의한다.
PopupControlID에 pnlModalWindow로 선언하여 TargetControlID에 의해 발생한 이벤트로 표시될 모달창을 정의한다.
BackgroundCssClass로 PopupControlID이 표시될 때 모달창의 백그라운드로 적용할 CSS Class이다.
.modalBackground {
background-color:Gray;
filter:alpha(opacity=70);
opacity:0.7;
}
OkControlID는 PopupControlID로 선언된 모달창 내부의 컨트롤 ID로, confirm창의 확인 버튼 역할을 한다.
OnOkScript는 OkControlID에 의해 이벤트가 발생하였을 때 실행할 자바스크립트 함수이다.
CancelControlID는 PopupControlID로 선언된 모달창 내부의 컨트롤 ID로, confirm창의 취소 버튼 역할을 한다.
OnCancelScript는 CancelControlID에 의해 이벤트가 발생하였을 때 실행할 자바스크립트 함수이다.
PopupDragHandleControlID는 PopupControlID로 표시된 모달창을 마우스로 드래그 할 경우, 마우스 포인터가 모달창을 잡을 수 있는 컨트롤을 정의하며, pmwPnlTitle로 선언하여, 이 영역을 잡고 모달창을 이동시킬 수 있다.
RepositionMode는 윈도우의 크기의 변화가 있거나, 스크롤이 되었을 경우, 모달창의 위치를 재 설정할 것인지 정의하며, RepositionOnWindowResizeAndScroll로 선언하여 윈도우의 크기가 변화하거나 스크롤 되었을 때, 모두 모달창의 위치를 재 정의하도록 하였다.
추가적으로 X, Y 속성이 있는데, 이 속성은 X축과 Y축의 위치를 고정히켜서 표시하게 된다. X, Y를 선언하면, RepositionMode의 속성은 무시된다.
다음은 전체 소스이다.
<style type="text/css">
.modalBackground {
background-color:Gray;
filter:alpha(opacity=70);
opacity:0.7;
}
.modalPopup {
background-color:#ffffdd;
border-width:3px;
border-style:solid;
border-color:Gray;
padding:3px;
width:250px;
}
</style>
<script type="text/javascript">
var
selectedValue;
function
selectedRadio(t) {
selectedValue = t.value;
}
function
onOK() {
alert(selectedValue + "(을)를 선택하였습니다.");
}
function
onCancel() {
alert("취소하였습니다.");
return
false;
}
window.onload = function()
{
var
rdoLen = document.getElementsByName("rdoMovieList").length;
for
(var i = 0; i < rdoLen; i++) {
if
(document.getElementsByName("rdoMovieList").item(i).checked)
{
selectedValue =
document.getElementsByName("rdoMovieList").item(i).value;
}
}
}
<asp:Button ID="btnModalOpener"
runat="server"
Text="모달창열기" />
<asp:Panel ID="pnlModalWindow"
runat="server"
CssClass="modalPopup">
<asp:Panel ID="pmwPnlTitle" runat="server">
올해 가장 재미있게 본 영화는?
</asp:Panel>
<div>
<div>
<input type="radio" id="rdoMovieList1" name="rdoMovieList"
value="Iron Man"
checked="checked"
onclick="selectedRadio(this)"
/>
<label for="rdoMovieList1">Iron Man</label>
</div>
<div>
<input type="radio" id="rdoMovieList2" name="rdoMovieList"
value="Indiana Jones and
the Kingdom of the Crystal Skull"
onclick="selectedRadio(this)"
/>
<label for="rdoMovieList2">Indiana Jones and
the Kingdom of the
Crystal Skull</label>
</div>
<div>
<input type="radio" id="rdoMovieList3" name="rdoMovieList"
value="Dark Night"
onclick="selectedRadio(this)"
/>
<label for="rdoMovieList3">Dark Night</label>
</div>
<div>
<input type="radio" id="rdoMovieList4" name="rdoMovieList"
value="눈에는 눈 이에는 이" onclick="selectedRadio(this)" />
<label for="rdoMovieList4">눈에는
눈 이에는 이</label>
</div>
</div>
<asp:Button ID="pmwBtnOk" runat="server" Text="OK" />
<asp:Button ID="pmwBtnCancel" runat="server" Text="Cancel" />
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1"
runat="server"
TargetControlID="btnModalOpener"
PopupControlID="pnlModalWindow"
BackgroundCssClass="modalBackground"
DropShadow="true"
OkControlID="pmwBtnOk"
OnOkScript="onOK()"
CancelControlID="pmwBtnCancel"
OnCancelScript="onCancel()"
PopupDragHandleControlID="pmwPnlTitle"
다음은 실행결과이다.
OK 및 Cancel 버튼을 각각 클릭하면 OnOkScript과 OnCancelScript으로 선언한 자바스크립트 함수가 실행됨을 알 수 있다.
BackgroundCssClass속성을 삭제하면 다음과 같은 결과를 얻는다.
모달창 백그라운드로 회색의 배경이 사라져서 모달창처럼 느껴지지 않는다. 이 스타일은 유지하는 것이 모달창의 느낌을 살리는데 효과적을 듯 하다.
이처럼 모달창을 평함한 팝업창 스타일이 아닌 좀 더 눈에 띄는 창으로 만들고 싶을 경우 ModalPopupExtender를 사용하면 효과적으로 원하는 스타일을 적용할 수 있을 것이다.

Prev
Rss Feed
