【发布时间】:2010-01-20 16:51:06
【问题描述】:
您好,
今天早上可能脑子里放了个屁,但我需要一种方法来在 ASP .NET Ajax 更新面板内发生的操作结束时执行一些 JavaScript。这如何实现?
谢谢,
杰森
根据回复更新: 我并不完全清楚,因为根据我的要求,两个最初的答案都是正确的。在我的情况下,我只希望 JS 在执行 UpdatePanel 内控件的特定事件时运行,很抱歉造成混淆。
【问题讨论】:
标签: asp.net javascript
您好,
今天早上可能脑子里放了个屁,但我需要一种方法来在 ASP .NET Ajax 更新面板内发生的操作结束时执行一些 JavaScript。这如何实现?
谢谢,
杰森
根据回复更新: 我并不完全清楚,因为根据我的要求,两个最初的答案都是正确的。在我的情况下,我只希望 JS 在执行 UpdatePanel 内控件的特定事件时运行,很抱歉造成混淆。
【问题讨论】:
标签: asp.net javascript
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest(sender, args) {
// Executed when ajax request finishes, you could check the sender variable
// in order to identify which update panel fired the request
}
【讨论】:
这是一篇很好的文章。我认为这正是您正在寻找的:
http://blog.jeromeparadis.com/archive/2007/03/01/1501.aspx
唯一需要注意的是,此示例适用于任何 ajax 回调,因此如果您有多个更新面板,无论哪个更新面板完成了往返等,它都会触发。
【讨论】:
感谢 KevinP 和 Darin 的回答。我实际上忘记了脚本管理器上的实例请求处理程序。不幸的是,在我的情况下,每次该人在日历控件中导航时,我都会触发 end_request。我承担责任,因为我不清楚所有要求。我对他们的两个答案都投了赞成票。这是我的最终解决方案。
(请原谅我这是在 VB 中) Protected Sub mainCalendar_SelectionChanged(ByVal sender As Object, ByVal ev As EventArgs) Dim dtStart As DateTime = mainCalendar.SelectedDates(0) Dim dtEnd As DateTime = mainCalendar.SelectedDates(6)
Dim alertString As String = _
String.Format(
"alert('{0}');", dtStart.ToString("d") + " - " + dtEnd.ToString("d")
)
scriptManager.RegisterStartupScript(upCalendar, GetType(String), _
"alert", alertString, True)
End Sub
在这种情况下,警报只会在日历中选择一周时显示,而不是在用户更改月份或执行与导航相关的其他操作时显示。
再次感谢两位响应者的帮助
【讨论】: