【发布时间】:2009-10-02 15:06:42
【问题描述】:
当您在一个页面上有多个 UpdatePanel 时,有没有办法在后面的代码中找出哪个 Update Panel 触发了回发?看来Request["__EVENTTARGET"] 不是这样做的可靠方法。
【问题讨论】:
标签: asp.net
当您在一个页面上有多个 UpdatePanel 时,有没有办法在后面的代码中找出哪个 Update Panel 触发了回发?看来Request["__EVENTTARGET"] 不是这样做的可靠方法。
【问题讨论】:
标签: asp.net
UpdatePanel 不会触发 PostBacks,它会拦截它们。 PostBack 的发起者类似于按钮。如果您的所有交互元素都有事件处理程序,那么您自然知道哪个事件处理程序触发了哪个事件处理程序。
【讨论】:
您可以通过以下方式在客户端获取回发元素的 id
function pageLoad(sender, args) {
// add function to the PageRequestManager to be executed on async postback initialize
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
}
function InitializeRequest(sender, args) {
if(args._postBackElement.id === 'id_of_element_in_question' {
// do whatever
}
}
要在服务器上获取它,大概您会知道哪个控件/事件引发了回发,因为它将在代码隐藏的相关事件处理程序中处理。
【讨论】: