原因是script少了下面這一段,以致呼叫不到
<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

上方的 JavaScript 區塊,做的事如下:
1. 取得網頁中的 form1 物件
2. 判斷是否 submit
3. 將傳進來的二個參數寫進最上方的二個隱藏欄位(hidden)
4. 發送 submit


---------------------------------------------------------------
並非任何控制項都具備 PostBack 功能 所以有時只有拉Button時ASP.NET並不會產生上面script程式
控制項必須實作 IPostBackEventHandler 介面才會具有 PostBack 功能

__doPostBack(__EVENTTARGET,__EVENTARGUMENT)

_doPostBack是通過__EVENTTARGET,__EVENTARGUMENT兩個隱藏控制項向服務端發送控制要求的

__EVENTTARGET為要呼叫的控制項名稱,如果要呼叫的控制項是子控制項,用''$'或':'分割父控制項:子控制項,

__EVENTARGUMENT 是調用事件時的參數,通常為空

Control如果含有":" ,需要預先替替換"$"

但是在我們呼叫__doPostBack函數時,有些時候呼叫這個函數會出現"物件不存在"的錯誤?

那是因為Html裏面沒有__doPostBack函數物件,一般在拖放那些有自動回傳功能的控制項時,

當把他的autoPostback屬性設為True, 在運行的時候系統會自動添加__doPostback函數體,

當然最直接的辦法就是添加一個LinkButton然後把其Text屬性設為空,切記不要設 Visible屬性,

因為如果Visible=false,在翻譯成Html時,直接就忽略LinkButton的存在了。

 參考:http://maxwell-tech.blogspot.com/2008/10/dopostback.html

文章標籤
全站熱搜
創作者介紹
創作者 Ellen 的頭像
Ellen

Ellen-小人物的心聲

Ellen 發表在 痞客邦 留言(0) 人氣(459)