2010-06-13 100 views
2

在一個簡單的aspx頁面,我可以有一個自定義爲http://www.xefteri.com/articles/show.cfm?id=18簡單的頁面描述 JavaScript函數回發使用一個LinkBut​​ton:ASP.NET如何使用__doPostBack從自定義JavaScript與主/內容頁

<asp:LinkButton id="CreateFile" runat="server" onclick="CreateFile_Click" /> 

與背後的代碼有VB子程序:

Sub CreateFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 

,並且做了一個JavaScript自定義函數:

__doPostBack('CreateFile',''); 

當我將代碼移至具有相應主頁的內容頁面時, 簡單示例不再有效。

我知道,當涉及到主頁面 時,在生成的HTML中更改了服務器控件ID,並且我在Javascript中使用了正確的ID。 作爲示例,對於LinkBut​​ton ID,我使用'<%= CreateFile.ClientID%>'爲 生成的HTML中的Javascript。從來沒有這麼少,我仍然不能想到 瞭解如何在涉及主頁面時從Javascript獲取回傳。 更準確地說,在混合母版頁的代碼甚至不會編譯 但結果:

'CreateFile_Click' is not a member of 'ASP.testmaster_aspx' 

如果我從LinkBut​​ton的標記它編譯 但不工作,請刪除onclick =「CreateFile_Click」。相似,如果onclick從沒有母版頁的簡單版本 中刪除,它也不能正常工作。

當使用母版頁時,如何從自定義Javascript函數獲取回傳的任何輸入將不勝感激。

回答

1

你是否硬編碼__doPostBack的調用?

嘗試使用Page.GetPostBackEventReference

獲得您的JavaScript有效的句柄。

一旦你寫出了一個有效的回發事件引用,你可以將它包裝在一個本地函數中,你可以從母版頁調用它。

if (window.myPostBackfunction) // check if it exists 
    myPostBackFunction(); 
+0

我不想硬編碼對__doPostBack的調用,並且您指向GetPostBackEventReference的指針是正確的。謝謝! – harrije 2010-06-14 01:13:37

1

這樣做。

在主頁面中保留調用__dopostback函數的JavaScript。在每一個需要調用回調函數的頁面上,在事件發生後自動刷新一個按鈕,並使用「style = display:none」隱藏它(在本例中,我將該按鈕命名爲'btndp'),並在單擊該asp按鈕的事件,在__dopostback中寫入要運行的代碼。現在的JavaScript需要的元素的ID,而ASP需要的元素的名稱,以便在你的JavaScript在母版頁爲此

var btnName = $get("content_btndp").name; 
__doPostBack(btnName, ""); 

這裏你可以看到我們第一次使用該ID的元素的名稱,然後通過名稱__dopostback函數。因此,在每個內容頁面上,您可以放置​​一個具有相同名稱的不可見按鈕,並且您的母版頁上的一個腳本將全部提供。

我希望這可以解決您的問題。

相關問題