1. 클라이언트 콜백을 사용하는 페이지의 제작 과정
- ICallbackeventHandler 인터페이스 구현
- 서버로 콜백을 일으키는 클라이언트 스크립트 등록
- 서버의 응답을 처리하는 스크립트
-------------------------------------
2. 콜백 함수를 호출했을때 실행되는 메서드
-RaiseCallbackEvent 메서드
--> 클라이언트에서 전달한 값을 eventArgument 인자로 받아서 처리
- GetCallbackResult
--> 클라이언트로 전달할 데이터를 반환하는 메서드
2.1.
RaiseCallbackEvent 메서드가 먼저 호출됨.
클라이언트에서 전달한 값이 eventArgument 인자로 넘어온다.
이 메서드에서는 필요한 처리를 한 후에 처리결과를 클래스 내부 변수에 저장해야한다.
즉, RaiseCallbackevent는 클라이언트로 전달할 값을 반환하지 못하기 때문이다.
그 다음 GetCallbackResult는 RaiseCallbackEvent에서 저장된 내부 변수 값을 반환한다.
이 메서드에서 반환한 값은 클라이언트로 전달된다.
ICallbackEventHandler 인터페이스는 클라이언트에서 인자를 받아 처리하는 메서드(RaiseCallbackEvent)와 클라이언트로 결과를 반환하는 메서드(GetCallback Result)로 나뉜다는 점을 잘 파악해 두기 바란다. (-0-;)
--------------------------------------
3. 서버로 콜백을 일으키는 클라이언트 스크립트 등록
- 클라이언트 콜백은 XMLHttpRequest 컨트롤을 이용해서 수행
- 클라이언트 콜백용 API를 이용해서 생성
- GetCallbackEventReference
public string GetCallbackEventReference(Control control, string argument, string clientCallback, string context)
- argument의 값을 서버로 전달할 값을 나타내는 클라이언트측 표현
- argumetn의 값은 서버의 RaiseCallbackEvent 메서드 인자로 전달
- clientCallback은 GetCallbackResult 메서드의 반환 값을 받아 처리할 클라이언트 함수의 이름
--------------------------------------
4. 서버의 응답을 처리하는 스크립트
- 서버의 응답을 처리할 스크립트 함수의 이름은 GetCallbackEventReference 메서드의 clientCallback 인자로 지정된다
- 첫번째 인자는 서버의 처리결과 값, 두번째 인자는 context값
--------------------------------------
5. isCallback
페이지가 콜백에 의해 실행중일때 isPostBack 속성도 true값을 반환
- isCallback이 true일 때에는 페이지가 렌더링 처리를 하지 않는다
--------------------------------------
6. 그외
- 클라이언트에서 콜백 요청을 하는 함수는 WebForm_DoCallback
-
--------------------------------------
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
protected string cbReference;
protected string callbackReturn;
protected string callbackParam;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtCount.Text = "0";
}
if (!IsCallback)
{
//cbReference = Page.ClientScript.GetCallbackEventReference(this, "document.getElementById('" + this.txtClientCallBack.ClientID + "').value", "ReciveFunc", "'콜백성공'");
cbReference = Page.ClientScript.GetCallbackEventReference(this, "init", "ReciveFunc", "'콜백성공'");
}
}
void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
{
//eventArgument를 이용한 처리
callbackParam = "(" + eventArgument + ") 를 입력";
//ConnectDataBase(int.Parse(eventArgument));
}
string ICallbackEventHandler.GetCallbackResult()
{
// 처리 결과를 반환
return callbackParam;
}
<script type="text/javascript" language="javascript">
var init = 0;
function ReciveFunc(val, context)
{
//<!-- 서버에서 보내준 데이터를 전달 받는 녀석? -->
div3.innerHTML = val;
init += 10;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="div1">
<asp:Button ID="btnPostBack" runat="server" Text="포스트백" OnClick="btnPostBack_Click" /> <br />
<asp:TextBox ID="txtClientCallBack" runat="server" ></asp:TextBox> <br />
<button onclick = "<%= cbReference %>"> 클라이언트 콜백</button> <br />
반환값 : <span id="returnValue"></span>
</div>
'.Net Framework > C#' 카테고리의 다른 글
Excel 사용시.. 초간단 요약 (0) | 2010.06.04 |
---|---|
Class Property (0) | 2010.02.18 |
String.Format - 화폐 단위처리 (0) | 2010.02.18 |
참조 추가 또는 제거 (0) | 2010.02.18 |
프로젝트 참조 (0) | 2010.02.18 |