【问题标题】:Multiple Update Panels多个更新面板
【发布时间】:2009-10-02 15:06:42
【问题描述】:

当您在一个页面上有多个 UpdatePanel 时,有没有办法在后面的代码中找出哪个 Update Panel 触发了回发?看来Request["__EVENTTARGET"] 不是这样做的可靠方法。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    UpdatePanel 不会触发 PostBacks,它会拦截它们。 PostBack 的发起者类似于按钮。如果您的所有交互元素都有事件处理程序,那么您自然知道哪个事件处理程序触发了哪个事件处理程序。

    【讨论】:

    • 是的,我应该说“更新面板中的控制触发了回发”。我有同一个用户控件的多个实例,其中包含一个更新面板。
    • @unknown 因此应该触发正确的用户控件实例中的事件处理程序。如果我们知道您想要完成的工作,可能会更容易提供帮助。
    【解决方案2】:

    您可以通过以下方式在客户端获取回发元素的 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
        }         
    }
    

    要在服务器上获取它,大概您会知道哪个控件/事件引发了回发,因为它将在代码隐藏的相关事件处理程序中处理。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多