.Net Framework/C#2010. 2. 18. 00:05

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
Posted by Tiwaz