2012年1月31日 星期二

解決 ASP .Net 使用 jQuery 的 dialog 時,Postback後內容沒有更新的問題

jQuery 的 dialog 提供了一個很簡單的方式可以實現對話框的功能,


但是最近在使用時,發現 ~


如果原本 dialog 是 gridview 的內容,


在 postback 後 gridview 被更新了,但是 dialog 還是顯示舊的,


交叉測試之後,確定 gridview 有更新,


但是使用 System.Web.UI.ScriptManager.RegisterStartupScript 在 postback 後呼叫顯示 dialog,


卻還是顯示舊的內容,猜想是因為 cache 的原因


.


搜尋了相關資訊,解法大概有兩種:


1. 透過設定,將 cache 設為 false
(資料來源:UI Dialog Cache or Refresh?, @jQuery Forum)


$.ajaxSetup ({
cache: false
});


.


2. 將 dialog 整個 destroy 掉,再重建
(資料來源:UI dialog problem with scriptManger and updatePanel, @stackoverflow)


$('#objectID').dialog({

autoOpen: true,

width: 600,

maxHeight: 550,

closeOnEscape: true,

modal: true,

title: 'Dialog Title',

buttons: {

'Yes': function() { $(':submit[id$="_btnOK"]').click(); },

'No' : function() { $(this).dialog('close');$(this).dialog('destroy'); }

},

open: function(type, data) {

$(this).parent().appendTo(jQuery('form:first'));

}

});


.


後來我的做法是用 destroy ,因為怕改設定的話不知道會不會影響到其它的地方。


但是記得 ~ 如果用 destroy,在 autoOpen 的地方記得要設定為 true,不然關掉就開不起來了!!!

沒有留言: