2016-06-11 53 views
0

所以我在這裏有一個混合的情況,我以爲我在正確的軌道上,但似乎並沒有解決。ASP.NET WebForms解決方案中的UpdatePanel問題

因此,這裏是我想要的.....

我有一個使用的地圖繪製一個點的網頁。我不想幹涉用戶正在做什麼,但我想定期檢查數據庫以查看是否需要更新點。不需要=只需啓動計時器即可。有更新=自動觸發用戶可以手動點擊的「刷新」按鈕的點擊事件。

這裏是我\我試圖在路上....

所以我有UI工作像我想要的。我有一個更新面板,其中包含一個JavaScript倒數計時器。當計時器啓動時,它會觸發隱藏按鈕的「點擊」事件。代碼隱藏檢查數據庫。

如果它們在數據庫中沒有更新,則沒有任何操作,因此回調返回到更新面板並且定時器重新開始。

這裏是不工作....

如果有更新,我後面的代碼然後調用所需的程序,頁面上重做一切(例如重建和地圖等)。問題是即使代碼實際運行,頁面也不會重新加載。

我假設這是因爲整個UpdatePanel工作流被設計爲忽略任何頁面更新,影響不在更新面板中的對象。

我會發布代碼,但實際上沒有任何代碼。基本上在我的表單上,我有一堆東西我的網頁。在該頁面上有一個UpdatePanel,其中包含一個JavaScript和一個標籤(用於顯示用戶的計時器倒計時)。

在Code_Behind我隱藏按鈕(由JavaScript調用),還有簡單的代碼一樣.....

if (PageNeedsToBeUpdated() == true) 
{ 
     BuildPage(); 
} 

所以當語句是假的... ...一切正常。但是,如果它是真的,我需要整個頁面實際上重新加載。

謝謝....如果我完全以這種錯誤的方式進行,我完全願意去一個不同的方向。

+0

如何在將刷新頁面的後端代碼上添加autopostback = true。 – NepCoder

回答

0

您可以使用Timer的UpdatePanel Control和Set Interval屬性下的Timer控件到特定的時間間隔。然後把你的邏輯放入Timer_Tick事件。現在在特定的時間間隔,您的UpdatePanel將被更新。

+0

所以你說在我的更新面板中放置了一個計時器,當我需要整個頁面刷新時啓用該計時器? –

+0

如果你想刷新你的整個頁面,那麼你也可以在HTML中做。例如,如果您想每10秒刷新一次頁面,請在html的部分中添加一個標記,如下所示:如果要實施這個功能來自Code後面,那麼你可以這樣做:Response.AppendHeader(「Refresh」,「10」); –

+0

我會給你一個鏡頭。我絕對有權訪問我的代碼中的迴應,問題是如果append頭被忽略,因爲它不在更新面板中 –

0

我不知道這是否可能,但也許你們可以告訴我。是否有可能讓我的代碼向JavaScript返回一些值,以便腳本知道是重新啓動計時器還是觸發完整回發?

0

感謝您的建議...我已經整理出來了。我已經關閉了一天,所以現在沒有代碼發佈。基本上我最終在外部使用了一個腳本,如果更新面板和麪板內有隱藏按鈕的標籤。

按鈕單擊事件更改標籤的文本,JavaScript讀取該值以確定要採取的操作,包括觸發也在更新面板之外的其他按鈕。