現在AJAX很火,不要忘記ASP.NET2.0內建的ClientCallback,也是非常好用!
現在我來講一講ClientCallback簡單實現:
1.首先在aspx.cs檔案Page類增加ICallbackEventHandler介面
public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
ICallbackEventHandler介面在ClientCallback非常重要的,我們來看一下ICallbackEventHandler介面到底有什麼東西:
名稱 說明
string GetCallbackResult() 返回以控制項為目標的回調事件的結果。
void RaiseCallbackEvent(string eventArgument) 處理以控制項為目標的回調事件。eventArgument參數:表示要傳遞到事件處理常式的事件參數。
2.要實現指令碼回調當然要寫指令碼:
//觸發事件js
string cbref = Page.ClientScript.GetCallbackEventReference(this, "arg", "JSCallback", "context");
string cbScr = string.Format("function UseCallBack(arg, context) {{ {0}; }} ", cbref);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallBack", cbScr, true);
這段代碼是通過代碼RegisterClientScriptBlock設定觸發指令碼回調事件函數、回呼函數、異常處理函數。UseCallBack(arg, context)函數: 觸發服務端事件函數; arg是要傳遞到事件處理常式的事件參數,context是上下文參數(很少用到,可以在下面JSCallback回呼函數中得到此值,但我在服務端得不到此值,請高手解答)
//回調js
string context1 = "<script type=\"text/javascript\">function JSCallback(arg, context) { document.forms[0].TextBox1.value = arg; window.alert(context); }</script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JSCallback", context1);
這段代碼是通過代碼RegisterClientScriptBlock註冊回調後的js,也可以直接寫到網頁裡。回調js的用處:
JSCallback(arg, context) 函數: js裡JSCallback函數是處理服務端返回的參數(例如:返回xml參數,經過處理後顯示下拉框裡)。
ClientCallback運行流程:
當頁面執行UseCallBack(arg, context),就自動到服務端運行RaiseCallbackEvent(string eventArgument),然後是GetCallbackResult(),最後執行頁面JSCallback(arg, context) 函數。
3.選擇一個觸發事件的條件:
就是讓頁面執行觸發服務端事件函數。例如:Button2.Attributes.Add("onclick", "UseCallBack('GYF','GYF2');");
哈哈,這樣實現了無重新整理了,很簡單吧!本人寫作水平很有限。
詳細看代碼:代碼下載