模式視窗頁面不更新的問題

zenzuguo發表於2009-09-15

方法一:

window.showModalDialog("xxxx.aspx"+"?temp="+Math.round(Math.random()*10000),window,"dialogWidth:400px;dialogHeight:400px;help:no;unadorned:no;resizable:yes;status:no");

方法二:

一次意外發現第二次開啟模式視窗時,不能進入if(!Page.Postback),當時情景是這樣的:點選Gatagrid的一行後的update按鈕,透過url傳兩個引數到模式視窗,然後模式視窗在Page_Load 裡取引數,讀取資料庫,初始化頁面(在if(!Page.Postback)裡)。在模式視窗中修改內容,提交。回到父頁面,發現Datagrid的內容已經更新,然後再點update按鈕,進入模式視窗,發現模式視窗中顯示的內容還是更新之前的內容,查詢資料庫,資料庫記錄也已經更新。除錯,發現兩次url一樣(引數一樣),第二次開啟模式視窗時,if(!Page.Postback)不能進去,恍然大悟,然來是快取在作怪(因為兩次url一樣,所以瀏覽器直接從快取取)。解決方案: 1.在Page_Load的if(Page.Postback)上面清除快取。增加如下程式碼: Response.Cache.SetNoServerCaching(); Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); Response.Cache.SetNoStore(); Response.Cache.SetExpires(new DateTime(1900,01,01,00,00,00,00)); 2.每次點選update按鈕時,使每次產生的url不一樣。用於Datagrid每行的key一樣,可定每次傳的引數一樣,也就是url一樣,可不可以增加一個引數,每次傳一個隨機數呢?當然可以。修改後url如下: Date date = new Date(); string url = "WebForm2.aspx?key1="+ par1 +"&key2="+ par2 +"&flag=" + date; 3.修改瀏覽器配置。步驟如下: Tools->Internet Options ->General 在Template Internet files部分選擇Setting,在Check for newer versions of stored pages 處選第一個就可以了(預設是Automatically).點選確定就搞定了,當然這是治標不治本的方法,只是告訴大家這樣可以臨時解決。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/106285/viewspace-1026958/,如需轉載,請註明出處,否則將追究法律責任。

相關文章