2011-12-12 59 views
0

我相信這不是一個獨特的問題,但我正在繪製一個空白(星期一早上)如何解決它。Gridview在瀏覽時仍然顯示,然後返回

在我的導航菜單上,用戶使用DDL打開一個頁面,從下拉菜單中選擇一條記錄,在Gridview中打開一行,顯示幾個字段。用戶可以點擊編輯和更新兩個字段,當然也可以選擇取消,或者從顯示Gridview中新記錄的下拉列表中選擇另一條記錄。

這一切工作正常。

問題是當用戶轉到導航菜單並轉到另一頁然後回到第一頁時,正在查看的最後一條記錄仍顯示在Gridview中,而不是僅顯示DDL並等待選擇。就好像頁面加載事件不會再次觸發一樣(事實上並非如此)。我需要它作爲初始加載啓動,以便'If Not ISPostback Then'邏輯正確啓動。

看起來頁面被緩存,只是重新加載或重新顯示,是否有任何事件發生或是這個瀏覽器?

感謝您的任何想法。

+0

由於視圖狀態,沒有代碼示例,我再次看到它的聲音我只能想象當用戶單擊另一個導航鏈接時需要做些什麼(重置網格視圖) –

+0

嗨@尼克,對不起並不是很多代碼,它非常基本。你可以向我解釋如何重置導航點擊gridview? – htm11h

+0

這聽起來像是一個瀏覽器/緩存問題。你有沒有設置NoCache等? 'Response.Cache.SetCacheability(HttpCacheability.NoCache);' – GalacticCowboy

回答

1

您應該確保您的頁面不會被IIS和最終用戶的瀏覽器緩存。

爲了確保頁面不會被IIS或客戶端瀏覽器緩存,您可以將以下指令添加到頁面頂部:

<%@ OutputCache location="None" %> 

可以在MSDN找到更多的信息,但是這與在響應中設置緩存能力相同,除了它是聲明性的,我個人比較喜歡。

作爲替代方案,如果你不希望有任何緩存的頁面,則可以添加以下部分的web.config的system.web節:也可以找到關於此

<caching> 
    <outputCache enableOutputCache="false" enableFragmentCache="false" omitVaryStar="true" /> 
    </caching> 

更多細節在MSDN

+0

我在頁面指令中添加了<%@ OutputCache location =「None」%>並且沒有運氣。當我離開另一頁面並返回到原始頁面時,gridview仍然顯示在我離開頁面時正在查看的最後一條記錄中。無論我查看多少其他頁面,至少不超過10個隨機站點。 – htm11h

+0

但我確實喜歡它停止瀏覽器後退按鈕問題。謝謝你解決了我正在處理的另一個問題。 – htm11h

+0

@ marc11h:好的,這實際上是非常重要的信息,因爲這意味着該頁面不應該被緩存。您可以使用fiddler(www.fiddle2.com)進行復查。如果頁面被緩存,當你回到它時,HTTP狀態將是304(我認爲)。如果是這樣的話,還有其他一些設置可以調整,以迫使頁面立即過期,因爲某些瀏覽器對緩存不是很好。否則,我們會知道問題出現在代碼中,可以開始在那裏查看。 –