__doPostBack用法 【csdn】
???? 今天寫ajax程序時,需要重新從后臺加載數(shù)據(jù),所以用了__doPostBack方法。 __doPostBack并不是我自己寫的方法,是由asp.net 自己加入頁面中的方法。我們運(yùn)行Asp.net程序后,會在生成的html源碼中看到__doPostBack方法,其代碼如下:
代碼 <script?type="text/javascript">//<![CDATA[
var?theForm?=?document.forms['aspnetForm'];
if?(!theForm)?{
????theForm?=?document.aspnetForm;
}
function?__doPostBack(eventTarget,?eventArgument)?{
????if?(!theForm.onsubmit?||?(theForm.onsubmit()?!=?false))?{
????????theForm.__EVENTTARGET.value?=?eventTarget;
????????theForm.__EVENTARGUMENT.value?=?eventArgument;
????????theForm.submit();
????}
}
//]]>
</script>
__doPostBack說明: __doPostBack可以實(shí)現(xiàn)客戶端控件調(diào)用服務(wù)器端控件的響應(yīng)。
__doPostBack方法的格式為: __doPostBack(eventTarget,eventArgument)
? 參數(shù): eventTarget:是要觸發(fā)的服務(wù)器控件的客戶端ID
? eventArgument:參數(shù)
這個兩個值在后臺可以通過下邊方法得到:
??? Request["__EVENTTARGET"]???? :獲取得到引發(fā)頁面PostBack的控件ID
??? Request["__EVENTARGUMENT"]: 獲取參數(shù)。
例子,回發(fā)UpDataPanel,通過參數(shù)獲取資料。
1)首先調(diào)用doPostBack觸發(fā)回發(fā):?
?說明:
ctl00_ContentPlaceHolder1_upModulePower:是加了母版頁后的生成的客戶端ID。
jsPostback:用于判斷是不是通過js控件觸發(fā)的回發(fā)。因?yàn)閁pDatePanel中會有其它服務(wù)器控件解發(fā)的回發(fā),所以用此參數(shù)加以區(qū)分。
?2) 在后臺PageLoad中得到參數(shù),并取數(shù)據(jù)。
//判斷是否是js觸發(fā)的回發(fā)?if?(Request["__EVENTARGUMENT"]?==?"jsPostback")
{
????//此處調(diào)用相關(guān)后臺方法
??? //……
}
?
其它問題:
??? 但是在我們調(diào)用__doPostBack函數(shù)時,有些時候調(diào)用這個函數(shù)會出現(xiàn)"對象不存在"的腳本錯誤? 那是因?yàn)镠tml里面沒有__doPostBack函數(shù)體,一般在拖放那些有自動回傳功能的控件時,當(dāng)把他的autoPostback屬性設(shè)為True,在運(yùn)行的時候系統(tǒng)會自動添加__doPostback函數(shù)體。當(dāng)然最直接的辦法就是添加一個LinkButton。在頁面中加如 LinkButton ,頁面就會在頁面中加載POSTBACK所需的JS,然后把其Text屬性設(shè)為空,切記不要設(shè) Visible屬性,因?yàn)槿绻鸙isible=false,在翻譯成Html時,直接就忽略LinkButton的存在了
轉(zhuǎn)載于:https://www.cnblogs.com/yongtaiyu/archive/2011/05/13/2045746.html
總結(jié)
以上是生活随笔為你收集整理的__doPostBack用法 【csdn】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apple Mac OS X每日一技巧0
- 下一篇: Linq标准查询运算及用法