2011-06-07 103 views
0

我有一個GridView,它有一個RowCommand事件,可以在點擊時打開一個modalpopupextender。一個小問題是,如果用戶打開和關閉模式彈出窗口,然後刷新頁面,彈出窗口再次彈出 - 大概是因爲刷新導致RowCommand事件的重新引發。GridView的RowCommand - 檢測頁面刷新而不是重新執行

我該如何檢測並避免再次打開窗口?

編輯:我使用AJAX工具包,和模態彈出是客戶方,但是從RowCommand事件

+0

爲什麼我得到這個權利:在服務器上生成彈出側? – user492238 2011-06-07 08:12:40

+0

你想使用ajax嗎?你使用jQuery嗎? – Arian 2011-06-07 08:20:14

+0

對不起,我會讓帖子更清楚 - modalpopup在頁面標記中,但是我從關於彈出窗口的RowCommand事件 – Chris 2011-06-07 08:22:17

回答

0

稱爲如果重裝再次觸發rowcommand事件,它的出現,您正在使用GET參數?一般來說,您必須跟蹤來自客戶/客戶的回覆,並針對每個迴應分別決定如何處理。實現此目的的一種方法:

在每個交付的頁面中提供「頁面交付計數器」。它在服務器端進行維護,每增加一個頁面響應都會增加。 (現在,讓多線程和可能的重啓工作進程在這裏 - 這個答案只是爲了演示一般的方案,但考慮在每個用戶基礎上管理計數器,即將其存儲在用戶的會話中,如果任何)。

將計數器註冊到服務器的集合中,並將其發送到客戶端的隱藏變量中。如果回傳進來,請閱讀其計數器值並檢查,如果它屬於之前已經使用的響應。這將標記您描述的情況(用戶點擊重新加載)。

0

你的問題在刷新或(F5)。所以,你需要的,如果它的刷新或只是正常後回檢測..

嘗試this

window.onbeforeunload = function (evt) { 
    var message = 'Are you sure you want to leave?'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 

這將捕獲的刷新,允許您顯示關於此的消息。


其他鏈接,這將是對你有好處:

- asp.net problem with F5 after postback, cuz it does what it should

- C# validate repeat last PostBack when hit Refresh (F5)

- Detecting Refresh or Post back in ASP.NET