我正在试图弄清楚如何从实际保存表单的控件进行AJAX调用时,如何在屏幕上显示“已保存”消息(由JQuery提供淡出效果)。表单相对复杂,有5个单独的UpdatePanels,其中一些(但不是全部)控件将进行回复以保存表单。
我知道哪些控件应该导致显示保存消息。但是,当AJAX请求完成时,我不知道如何识别这些控件。我想我需要在下面的“endRequestHandler”中添加我的逻辑,但我可能是错的。
REVISION 这是我可能希望在整个网站上使用的内容。我需要提出一个通用的机制来声明性地指示一个控件应该导致“已保存”消息,只要它是回发的源。我可以在可以在InitializeRequestHandler或EndRequsetHandler中访问的控件上放置一些东西(见下文)吗?也许我应该添加一个我可以使用JQuery找到的自定义属性? END REVISION
如果您需要更多信息,请与我们联系。在此先感谢您的帮助!
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
function endRequestHandler(sender, args) {
//--check to see if the sender should cause the "Saved" message to display
//--use JQuery Fadeout effect to make the "Saved Message" display on the screen
// temporarily
}
答案 0 :(得分:0)
您可以存储开始使用ajax调用的人,然后在end_request中取消设置存储它的变量。
我假设有一个begin_request事件给你这个,如果没有,你可以先让你的元素调用一个函数来设置谁在启动调用然后让函数执行回调。
你回答了自己的问题。向控件添加自定义属性。
答案 1 :(得分:0)
为了解决这个问题,我在主页上放了一个隐藏字段,id ='hfSaveMessageText'。这将保留要显示的消息(如果有)。我还在masterPage上放了一个带有id ='mpSaveSpot'和适当样式的span。这是我的消息显示的地方。
然后我创建了一个服务器端方法,它接受System.Web.UI.Page和要显示的字符串消息。该方法获取对母版页上隐藏字段的引用,并将值设置为用户传入的消息(例如:“记录已删除”或“已发送电子邮件”)。
以下javascript在每个异步回发endRequest上运行,以查看是否有需要显示的消息。如果是这样,我会显示消息并在4.5秒内淡出(由JQuery fadeOut提供)。
//--Get an instance of the PageRequestManager so we can
// designate an end-request handler
var prm = Sys.WebForms.PageRequestManager.getInstance();
//--designed the displayFadeoutMessage as the end request handler
prm.add_endRequest(displayFadeoutMessage);
function displayFadeoutMessage() {
//--if there is a message to display then show it
if ($("#ctl00_hfSaveMessageText").attr("value") != "") {
//--add a span to the placeholder span and then fade it out
// over 4.5 seconds
$("#mpSaveSpot").append("<span id='spanFadeoutMessage' style='background-color:#ddd;'>" + $("#ctl00_hfSaveMessageText").attr("value") + "</span>").fadeOut(4500, function() {
//--once the message is faded out then clear the message hidden
// field and clear out the message span
$("#ctl00_hfSaveMessageText").attr("value", "");
$("#mpSaveSpot").empty();
});
}
}
现在我有一个可重复使用的机制,用于在我的网站上显示奇特的淡出消息,无论我在哪个页面。问题解决了!