2010-04-14 79 views
1

我有same problem I had yesterday ...解決方案Aristos提供的解決方案幫助解決了這個問題,但我有其他地方發送updatepanel回發導致相同的問題。多個更新面板和多個回發導致整個頁面刷新

當更新面板更新並且另一個更新請求在有機會呈現第一次更新之前被調用時,整個頁面將刷新而不僅僅是更新面板。

我以前fiddler,看看發生了什麼事情,這裏是發生了什麼......如果我等待請求做另一個請求我得到這個之前返回:

21443 |的UpdatePanel | dnn_ctr1107_CRM_SalesTool_LeadsUpdatePanel |

但是,如果我不等待,我得到這個:

66 | pageRedirect || http://mysite.com/salesdashboard.aspx|

previous question的代碼仍然是除了我添加UpdateMode="Conditional"到更新面板相同。

任何想法?或者是唯一的解決方案,以確保2+更新任何數量的更新面板(只要他們在同一頁面上)永遠不會發生?

謝謝
馬特

+0

SSDC(Same S ...不同的代碼?)哦不再:) – Aristos 2010-04-14 17:59:59

+0

@Matt等待/阻止點擊,直到refress是可以接受的? – Aristos 2010-04-14 18:33:45

+0

哦,嘿,你又來了!感謝昨天的幫助。 wait/block不會工作......問題是我實際上有一個計時器,它每秒更新一次updatepanel,所以如果我在計時器滴答時發出請求,它會刷新頁面......任何其他解決方案? – Matt 2010-04-14 18:40:02

回答

0

也許微軟,因爲他需要知道什麼是每次回傳,所以大概如果你點擊時,他等待返回自動AJAX不能處理在同一時間2請求,那麼他知道帖子回來了,有變化,所以他通過傳遞阿賈克斯爲正確的回報。

我能想到2種方法。一種方法是通過使用jQuery和ajax自己完成並避免UpdatePanel。

第二種方法是在等待返回時阻止點擊,或者使請求的機制一個接一個地發出請求。

此代碼可以幫助您瞭解何時阻止輸入以及何時釋放輸入或執行您的任何想法。

$(document).ready(function() { 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 

    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest); 
}); 

function InitializeRequest(sender, args) { 
    LastIdCaller = args.get_postBackElement().id;  
} 

function EndRequest(sender, args) { 
} 
0

我可能是錯的,但如果我是對的,那麼如果您使用的是asp.net WebForms,則無法執行多個ajax請求。在asp.net WebForms中,頁面上只有一個Form元素。同一頁面上的多個Ajax請求需要多個表單元素。 Html被設計爲在表單元素內部回發,並且處理所述回發的機制是表單,它是容器。一次只能回覆一次。因此,因爲Asp.Net WebForms每頁只有一個表單元素,所以每個頁面只能執行1個ajax回發。

或者,您可以創建通用ASHX Http處理程序來執行表單邏輯並使用JQuery Ajax將其回發到通用Http處理程序。在這種情況下,您可以根據需要一次完成多項任務。

通常我使用ASHX處理程序的任何時候,我需要提供的圖像改變,像飛行成像。我也將它們用於大數據輸出。例如。 ASHX處理程序返回一個JSON的大轉儲。我做了一個Ajax Postback到ASHX處理程序來獲取JSON中的一組數據,並將它附加到一個表格等等,並且我在一個定時器上重複調用ASHX處理程序以獲取新數據(例如5分鐘定時器)等

如果您對自己想要做的事情有更多的瞭解,我可能會爲您提供其他解決方案。

編輯:我看着你的其他職位你鏈接,我認爲一個ASHX處理程序將爲您服務。您可以設計ASHX處理程序以JSON形式返回搜索數據。您可以在ASHX處理程序中使用Request varaibles,並可以使用JQuery.Ajax將post數據發送到ASHX Handler。

你應該能夠通過它自己的成功功能發出多個請求。然後,您需要以這種方式編寫JavaScript,以便在處理來自ashx處理程序的JSON數據時,它可以在完成時與其他請求合併。