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,不然關掉就開不起來了!!!