我打電話給我的UI對話框,從中有ScriptManager的,這樣頁:UI對話問題scriptManger和UpdatePanel的
function openDialog() {
var $dialog = jQuery('#dialog');
$dialog.load('dialog.aspx');
$dialog.dialog({
autoOpen: false,
title: 'Add New Contact Personel',
modal: true,
height: 200,
width: 400,
show: 'puff',
hide: 'puff',
close: function (event, ui) {
$dialog.html('');
$dialog.dialog('destroy');
}
});
$dialog.dialog('open');
}
dialog.aspx的身體看起來是這樣的:
<body>
<form id="form1" runat="server">
<%-- <asp:ScriptManagerProxy ID="proxyScriptor" runat="server"></asp:ScriptManagerProxy>
<asp:UpdatePanel ID="upadatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>--%>
<div>
<table border="0">
<tr>
<th>SomeText:</th>
<th><asp:TextBox ID="someTextBox" runat="server"></asp:TextBox></th>
</tr>
</table>
</div>
<asp:Panel ID="updatePanel" runat="server">
<asp:Button ID="UpdateLoger" runat="server" Text="Update" onclick="Update_Click" />
</asp:Panel>
<%-- </ContentTemplate>
</asp:UpdatePanel>--%>
</form>
</body>
現在:如果我點擊updateBtn我要更新回傳文本,近距UI對話框,做刷新這樣的:
UpdateText(someTextBox.Text);
string script = @"jQuery('#dialog').html('');jQuery('#dialog').dialog('destroy');window.location.reload()";
ScriptManager.RegisterClientScriptBlock(this, typeof(UpdatePanel), "jscript", script, true);
因此,如果再添腳本管理器在這個頁面上的UI對話框,非常非常奇怪的事情發生(像__doPostBack不起作用),如果我刪除scriptManager,updatePanel不顯示它的內容,如果我把scriptMangerProxy,updatePanel不顯示它的內容。那麼我應該怎麼做呢?
好的,但不是這樣,你有一個醜陋的postabck後btnOpenDialog點擊?我上面寫的所有代碼如果用window.location.reload()關閉UI對話框,這也是我想避免的一個難看的回發。 – kosnkov
主要問題是,如果我不會做window.location.reload(),那麼我不知道,這個彈出式銷燬Viestate或者其他的東西,因爲__DoPostBack不起作用,所以我需要使用window.location來刷新它.reload(),有沒有其他辦法使__DoPostBack工作? – kosnkov
對不起。我忘了將異步觸發器添加到更新面板。這應該防止「醜陋的回發」。 – chprpipr