2011-08-15 119 views
3

我有一個也使用jQuery Mobile進行渲染的ASP.NET網站。大多數情況下,這很有效,但是我遇到了一個小問題。該網站進行調查。頁面上有幾個「提交」按鈕。爲了防止整個站點重新加載,提交按鈕位於UpdatePanels中,以便只重新呈現按鈕。jQuery Mobile和ASP.NET更新面板問題

(我還要提一下,我們在另一個頁面上有一個Report控件,這與我將要描述的相同的問題)。

當點擊提交按鈕時,按鈕重新呈現,但現在看起來像一個「正常」按鈕,因爲jQuery Mobile添加的所有CSS現在都丟失了。

所以...我知道問題在於,因爲整個頁面沒有重新加載,jQuery Mobile不會攔截回發並向按鈕注入必要的CSS。

我不知道的是如何解決它。

我想我已經足夠知道在回發上做一個javascript調用,但我不知道要調用哪個jQuery Mobile例程(我假設有某種document.Ready()調用,但是如果可以的話,找到它)以解決它。

我確實在jQuery Mobile網站上發佈了這個問題,但沒有得到答覆。由於客戶正在扼殺我的脖子,我在這一點上感到絕望。

任何幫助,將不勝感激。

回答

3

UpdatePanel本質上意味着你有你的網站上運行的ASP.NET AJAX。
pageLoad (not exactly DOM Ready)在每次部分回發後調用。 使用該事件並在其中寫入您的糾正碼。

function pageLoad(sender, args){ 
    //Jquery Code 
} 

P.S:UpdatePanels are really dangerous。那件事我已經得到了我的公平分享。
請不要在將來與其他庫一起使用它。

希望這有助於,真的。

+0

謝謝納文。是的,我也不是UpdatePanel的忠實粉絲,但我暫時堅持使用它。就像我說的那樣,問題不在於如何調用Javascript,而是我不知道要調用哪個函數。這實際上是一個比UpdatePanel問題更多的jQuery Mobile問題。 –

+0

耶託德我明白了。我正在催促你以另一種方式思考。爲什麼不在'pageLoad'處重置樣式?我很抱歉,我不知道任何其他方式 – naveen

4

我找到了解決方案,並希望在此發佈給其他人。我的解決方案稍微有點矯枉過正,但在大多數情況下,這只是「正常工作」。在一天結束時,您需要做的是觸發需要更新的元素上的「創建」事件。這就是jQuery Mobile正在尋找的東西,它是什麼啓動它來重新解析HTML。以下語句將抓取頁面上的所有<div>(其中自然包括所有更新面板),並將重新呈現其中的任何控件。我將它添加到後面的ASP.NET代碼中的提交按鈕的Click()事件中。 (請注意,添加JavaScript到按鈕的客戶端onclick()似乎不工作)

ScriptManager.RegisterStartupScript(Page, GetType(), "temp", "<script type='text/javascript'>$('div').trigger('create');</script>", false); 

請注意,如果您對內容的更好的處理你想重新解析,然後代替抓取頁面上的每一個<div>,您可以針對需要更新的確切<div>,只更新所需的內容。這樣可以提供更好的性能,但即使在複雜的頁面上,解析也相當麻煩。

+0

驚人的,救了我。雖然有一點小小的改變,但我必須將'GetType'的參數改爲'Me.GetType'才能使用vb。 – kevin