가령 id 가 btnTest 라는 버튼을 클릭하면
서버측에서
private void btnTest_Click(object sender, System.EventArgs e)
{
Response.Write(" 뭔가를 하겠죠.^^ ");
}
함수가 실행되게됩니다.
자바스크립트에서 위의 함수가 실행되게 하고 싶으시면요..
가령 Search() 라는 자바스크립트 함수에서 위의 함수가 실행되게 하고 싶으실때는...
function Search()
{
<%=Page.GetPostBackEventReference(btnTest)%>;
}
이렇게 하시면 됩니다.
나중에 렌더링된 걸 보면
위의 스크립트가
function Search()
{
__doPostBack('btnTest', '');
}
이렇게 렌더링된 걸 보실 수 있습니다.
ASP.NET 에서 내부적으로 PostBack 하는 함수는 모두 다 저런방법으로 구성되어있습니다.
직접 __doPostBack('컨트롤의 렌더링된 name', '') 이렇게 하실수도 있지만 다음 버전에서도 함수이름이
__doPostBack 이라는 법이 없으니깐 저렇게 서버에서 생성하도록 하는게 좋을 것 같습니다.(바뀌면 좀 곤란한데.^^)
만약에 저렇게 이벤트 핸들러가 아니구 커스텀 함수를 실행시키고 싶을 때가 있죠..
그럴때도 어차피 위와 같이 이벤트 핸들러를 사용해야 합니다.
저는 보통 LinkButton 을 사용하는 데요..
LinkButton 을 하나 갖다놓고 가령 id 를 lbnTest 라고 하면 Visible 속성을 false 로 설정하고
위에처럼 자바스크립트 함수를 정의하고요
function Search()
{
<%=Page.GetPostBackEventReference(lbnTest)%>;
}
코드비하인드에서는 클릭 이벤트 정의를 다음과 같이 커스텀 함수를 넣어서 정의하시면 됩니다.
private void lbnTest_Click(object sender, System.EventArgs e)
{
Search();
}
// 커스텀 함수
private void Search()
{
}
