1.4 doPostBack() 함수 사용하기
ASP.NET에서 새롭게 소개 된 웹 폼 페이지에서 서버와의 Submit 동작을 포스트 백(PostBack)이라는 동작으로 처리하고 있습니다. 포스트 백은 버튼 컨트롤(Button, LinkButton, ImageButton)들을 등록하면 확인할 수 있습니다. 이런 포스트 백의 이벤트를 클라이언트 스크립트에서 직접 접근하여 처리하는 방법에 대해서 지금부터 알아보도록 하겠습니다.
① PostBack 알아보기
웹 폼을 하나 만든 후 LinkButton과 Button, ImageButton을 하나씩 추가하여 다음과 같이 만들어 봅시다.
■ PostBack.aspx
------------------------------------------------------------------------
------------------------------------------------------------------------
PostBack.aspx 페이지를 실행하면 LinkeButton, Button, ImageButton이 출력되고, 각각의버튼을 클릭하면 포스트 백이 발생합니다. ASP.NET에서는 이렇듯 버튼 컨트롤을 사용하는 것 만으로도 포스트 백이 동작하도록 이미 정의가 되어 있는 것입니다. 실행결과를 간단히 살펴본 후 HTML 소스 보기를 이용하여 클라이언트에 출력되는 코드를 한번 살펴보도록 합시다. 다음은 HTML 소스 코드 중에 중요한 내용만 정리한 것입니다.
■ PostBack.aspx.html
------------------------------------------------------------------------
------------------------------------------------------------------------
■ DoPostBack.aspx.cs (중요부분)
------------------------------------------------------------------------
------------------------------------------------------------------------
코드를 하나씩 확인해 보도록 합시다. 우선 aspx 파일에서 ImgButtonClick() 메서드를 선언하고, <%=Page.GetPostBackEventReference(Button1)%>를 통해서 Button1을 클릭하였을 때의 포스트 백을 발생하게 됩니다. 이런 효과는 cs 파일의 Button2.Attributes["OnClick"] = "ImgButtonClick();" 구문과 IMG1.Attributes["OnClick"] = "ImgButtonClick();" 구문에서 각각 처리되는 것을 확인할 수 있습니다. 출력되는 결과의 HTML 코드를 확인해 보면 각각의 컨트롤에 ImgButtonClick() 메서드가 맵핑되어 있는 것을 확인할 수 있습니다.
그리고 cs 파일의 HyperLink1.NavigateUrl = Page.GetPostBackClientHyperlink(Button1, "") 구문과 aspx 파일의 <a href="<%=Page.GetPostBackClientHyperlink(Button1, "")%>"> 구문을 통해서는 javascript:doPostBack(‘Button’,’’)로 맵핑하고 있습니다.
마지막으로 TextBox 컨트롤의 TextBox1.Attributes["onKeyPress"] = "if(event.keyCode == 13) {" + Page.GetPostBackEventReference(Button1) + "; return false;}" 통해서 엔터를 눌렀을 때에는 Button 클릭의 포스트 백을 발생하라고 선언하고 있습니다. 모든 작업이 완료된 후 실행 결과를 확인해 봅시다.
ASP.NET에서 새롭게 소개 된 웹 폼 페이지에서 서버와의 Submit 동작을 포스트 백(PostBack)이라는 동작으로 처리하고 있습니다. 포스트 백은 버튼 컨트롤(Button, LinkButton, ImageButton)들을 등록하면 확인할 수 있습니다. 이런 포스트 백의 이벤트를 클라이언트 스크립트에서 직접 접근하여 처리하는 방법에 대해서 지금부터 알아보도록 하겠습니다.
① PostBack 알아보기
웹 폼을 하나 만든 후 LinkButton과 Button, ImageButton을 하나씩 추가하여 다음과 같이 만들어 봅시다.
■ PostBack.aspx
------------------------------------------------------------------------
<%@ Page language="c#" Codebehind="PostBack.aspx.cs" AutoEventWireup="false" Inherits="ClientScript.PostBack" %>
------------------------------------------------------------------------
PostBack.aspx 페이지를 실행하면 LinkeButton, Button, ImageButton이 출력되고, 각각의버튼을 클릭하면 포스트 백이 발생합니다. ASP.NET에서는 이렇듯 버튼 컨트롤을 사용하는 것 만으로도 포스트 백이 동작하도록 이미 정의가 되어 있는 것입니다. 실행결과를 간단히 살펴본 후 HTML 소스 보기를 이용하여 클라이언트에 출력되는 코드를 한번 살펴보도록 합시다. 다음은 HTML 소스 코드 중에 중요한 내용만 정리한 것입니다.
■ PostBack.aspx.html
------------------------------------------------------------------------
------------------------------------------------------------------------
■ DoPostBack.aspx.cs (중요부분)
------------------------------------------------------------------------
private void Page_Load(object sender, System.EventArgs e) { // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다. Button2.Attributes["OnClick"] = "ImgButtonClick();"; IMG1.Attributes["OnClick"] = "ImgButtonClick();"; HyperLink1.NavigateUrl = Page.GetPostBackClientHyperlink(Button1, ""); TextBox1.Attributes["onKeyPress"] = "if(event.keyCode == 13) {" + Page.GetPostBackEventReference(Button1) + "; return false;}"; } … private void Button1_Click(object sender, System.EventArgs e) { Label1.Text += "Button 컨트롤에 의해 PostBack 되었습니다
"; }
------------------------------------------------------------------------
코드를 하나씩 확인해 보도록 합시다. 우선 aspx 파일에서 ImgButtonClick() 메서드를 선언하고, <%=Page.GetPostBackEventReference(Button1)%>를 통해서 Button1을 클릭하였을 때의 포스트 백을 발생하게 됩니다. 이런 효과는 cs 파일의 Button2.Attributes["OnClick"] = "ImgButtonClick();" 구문과 IMG1.Attributes["OnClick"] = "ImgButtonClick();" 구문에서 각각 처리되는 것을 확인할 수 있습니다. 출력되는 결과의 HTML 코드를 확인해 보면 각각의 컨트롤에 ImgButtonClick() 메서드가 맵핑되어 있는 것을 확인할 수 있습니다.
그리고 cs 파일의 HyperLink1.NavigateUrl = Page.GetPostBackClientHyperlink(Button1, "") 구문과 aspx 파일의 <a href="<%=Page.GetPostBackClientHyperlink(Button1, "")%>"> 구문을 통해서는 javascript:doPostBack(‘Button’,’’)로 맵핑하고 있습니다.
마지막으로 TextBox 컨트롤의 TextBox1.Attributes["onKeyPress"] = "if(event.keyCode == 13) {" + Page.GetPostBackEventReference(Button1) + "; return false;}" 통해서 엔터를 눌렀을 때에는 Button 클릭의 포스트 백을 발생하라고 선언하고 있습니다. 모든 작업이 완료된 후 실행 결과를 확인해 봅시다.
'Developer' 카테고리의 다른 글
javascript jquery Plugin을 이용한 textarea 자동 사이즈 조정(auto resize) (125) | 2010.05.28 |
---|---|
javascript cross browser 객체 위치 구하기 (120) | 2010.05.27 |
MSDN Site 정보 (0) | 2010.04.06 |
Javascript Cross Browser Current element Click Position(현재 영역에서 마우스 클릭 위치 구하기) (242) | 2010.03.18 |
View all NTEXT, TEXT Type Column in Query Editor(ntext 타입의 컬럼 내용 쿼리편집기에서 전체 보기) (0) | 2010.03.08 |