今天在做開發的時候,需要在client端調用server端的方法,以前沒有用過。請教了一位朋友,知道了可以用_doPostBack來完成這個功能,所以上網搜了一些資料,其中下面這篇不錯,摘錄下來。。。。
最後 感謝所有協助過我的朋友。。。
關於前台調用後台事件__doPostBack函數
在.NET中,所有的伺服器控制項提交到伺服器的時候,都會調用__doPostBack這個函數,所以靈活運用這個函數對於我們的協助還是很大的。
比如,在我們寫程式的時候經常會需要動態產生一些控制項,最簡單的方法就是通過一個字串,比如string strButton = <input type =”button” ID=”button1”>,然後輸出到頁面,但是如果我們需要這個控制項來執行一些伺服器的功能,就比較困難了。這裡我們就可以用過借用__doPostBack這個函數來完成。接下來我覺個例子來說明一下具體如何調用。
既然要在伺服器端運行那麼,我們可以聲明一個不可見的LinkButton控制項,那通常,我們希望一個控制項不可見,通常都是把visible屬性設為false。但是在這裡我們把LinkButton的Text屬性設定為空白,來是這個LinkButton不可見(為什麼要這麼設定,而不是直接設定visible屬性,我會在下面說明),接下來我們可以在LinkButton裡面寫一些伺服器端的代碼。然後就是如何通過我們動態產生的用戶端控制項來調用LinkButton裡面的功能,我們可以通過一個JavaScript函數來實現
function ExcuteOnServer()
{
//第一個參數是你希望提交到伺服器的控制項的ID號,第二個參數是事件參數
__doPostBack('LinkButtonID','');
}
接下去我們只需要在動態產生的這個Button控制項的onclick事件中寫上onclick=”JavaScript:ExcuteOnServer();“,這樣當我們點擊這個動態產生的用戶端控制項的時候,他便會執行LinkButton中的代碼。
這樣便實現了動態產生的用戶端控制項提交到伺服器端的功能。
最後要說一下的就是為什麼希望LinkButton控制項不可見的時候,不是通過visible屬性來完成的。因為當我們把visible屬性設定為false的時候,瀏覽器在解析的時候,根本不會把這個控制項放在頁面上,也就是說這個控制項是不存在的,所以我們在調用__doPostBack函數的時候,便會找不到控制項。
另:今天在aspalliance上看到一篇文章:Four Ways to Locally Update a Web Page,其sample 3展示了用ICallbackEventHandler介面實現用戶端調用伺服器方法的實現過程。大家可以下載demo看一下。