__doPostBack() 과 Page.GetPostBackEventReference()함수
ASP.NET 개발을 할 때 submit() 기능을 사용하려고 하면 에러가 발생하는 경우가 있다.
이럴 때 버튼 이벤트 등을 이용해서 자바스크립트로 Behind code(.cs)의 메서드를 실행해야할 때가 발생한다.
이럴 경우 보통은 aspx 화일에서 자바스크립트로 __doPostBack() 메서드를 정의해서 사용하면 가능한다.
하지만, 이보다 더 좋은 방법이 있다.
__doPostBack() 메서드는 .net에서 자동 생성하는 부분으로, 개발자가 별도로 작성하여도 바뀔 가능성이 있다.
또한, .net에서 자동으로 생성하지 않는 경우도 발생한다.
자바스크립트에서 behind code의 메서드를 실행하고 싶을 때는 아래와 같은 방법을 권한다.
<%= Page.GetPostBackEventReference( btnOk2 ) %>
이는 postback이 발생하는 WebForm Control을 매개변수로 넘겨주면, 자동으로 __doPostBack()을 생성해 준다.
ex)
[Page.aspx]
btnOk -> HTML Input 컨트롤 - visible
<script language="javascript">
function btnOkClick()
{
<%= Page.GetPostBackEventReference( btnOk2 ) %>
}
</script>
<input type="button" onclick="btnOkClick()">
[Page.aspx.cs]
btnOk2 -> WebForm Button 컨트롤 - invisible
private void btnOk2_Click(...)
{
...
}
other ex)
[pageB.aspx]
<script language="javascript">
function Dosomething()
{
// ...
<%= Page.GetPostBackEventReference( btnOk ) %>
// 여기에 __doPostBack('btnOk', ''); 를 사용해도 가능하다.
}
</script>
<asp:Button ID="btnOK" runat="server" OnClick="btnOk_Click" />
[pageB.aspx.cs]
protected void btnOk_Click(object sender, EventArgs e)
{
// ...
}
참고 : Page.GetPostBackClientHyperlink()
HyperLink나 LinkButton의 출력결과처럼 a tag에서 __doPostBack() 메서드를 호출할 수 있도록 javascript: 문자가 앞에 붙게 됩니다.
'IT-개발,DB' 카테고리의 다른 글
[IT/개발] 파워빌더 DataWindow.Print property (0) | 2010.06.22 |
---|---|
[개발] 파워빌더, 데이타윈도우에서 Mouse Wheel 사용 제한 (0) | 2010.06.18 |
[IT/개발] ASP.NET 다른 페이지로 포스트백(submit) 하기 (0) | 2010.04.19 |
[IT/개발] (asp.net) textbox에 입력 문자열 지정 (0) | 2010.04.15 |
[ASP.NET/C#] 하드웨어 정보 얻는 방법 (0) | 2010.04.13 |
댓글