我有这个页面,你可以“编辑”用户的数据...我想发送一条消息,如“已成功编辑”,并使用新内容(DropDownLists和TextBoxes)更新页面。 / p>
我正在使用此消息:
ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "alert('Edited Successfully !');", true);
要更新页面,我尝试了:Response.Redirect(Request.RawURl)
,即使是简单的Response.Redirect(~/page.aspx)
也没有...
如果我尝试这种方式,它会更新页面,但之后它不会显示警告......; \ 所有这些数据(填充DropDownLists,Textboxes等......)都在Page_Load上调用。我试图在发送消息后调用相同的方法,但之后它不会更新= \
任何想法?
答案 0 :(得分:1)
您遇到的问题是因为您正在重新加载页面,因此您注册的脚本会丢失。
我在这种情况下使用的方法涉及使用jQuery和jQuery UI对话框:
在您的页面中,放置一个div作为消息容器。它最初是隐藏的,将在完成数据库请求后显示:
<div id="modal" title="Alert" style="display: none;">
</div>
编写一个显示对话框的javascript函数:
function showConfirmation(text){
$("#modal").html(text).dialog({
modal: true, // show the dialog as modal
buttons: {
Ok: function() {
location.reload();
}
}, // add a button that refreshes the page when clicked
closeOnEscape: false, // avoid the dialog close when ESC is pressed
dialogClass: 'no-close' // adds a CSS class that hides the default close button
});
}
dialog
函数负责使用jQuery UI库显示对话框。 buttons
参数显示一个按下按钮时刷新页面的按钮。
您所要做的就是使用RegisterStartupScript
方法注册对话框脚本:
ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "showConfirmation('Edited Successfully !');", true);
如果您不使用jQuery和/或jQuery UI,您只需在head标签中添加引用即可。如果您不想使用CDN,请将文件下载到本地站点。
<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
您可以看到客户端行为this fiddle
的工作示例