代码之家  ›  专栏  ›  技术社区  ›  Thomas

确定哪个更新面板导致回发?

  •  1
  • Thomas  · 技术社区  · 15 年前

    假设我有3个更新面板。我如何检测哪个更新面板导致了javascript的部分回发。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Azhar    15 年前

    使用隐藏字段

    在javascript中调用DoPostback()之前分配值,并且通过在服务器上这样做,您可以指定要回发哪个updatepanel。

        2
  •  1
  •   Nicolás    14 年前

    我有一个Web用户控件的自定义实现,其中有一个绑定到字段的管理器,然后我用一个属性标记输入,以便能够更容易地找到它 如果你找到一种方法来知道你有哪些更新面板,那么你也能做到。

    这是一个简单的例子,用这种方式工作的原因是一个很长的解释,但我想把它留在这里,以防有人发现它有用。

    它可能有一些bug,我很快就要离开了,也许今天晚些时候我会测试它。

    如果你把它放在一个更新面板里,你会看到它在工作。

       <span id="foo" customattr="foo_msg">click for foo_msg</span>
    

    最后,我所做的就是这样

    <html>
     <head>
     //make sure this executes on load
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myHandler);
    
    function MyManager(message){
     this.message=message;
     this.notify=function(){alert(this.message);}
    }
    
    $(
     function(){
      $("[customattr=Y]").each(
       function(){
        this.objAttr=new MyManager($(this).attr("customattr"));
        $.data(document.body,this.id,objAttr);
        $(this).click(
         function(){
          this.objAttr.notify();
         }
        )
       }
     }
    );
    
    function myHandler(a,b){
     $("[customattr]").each(
      function(){
       if(!this.objAttr){
        //smells like postback regenerated this field
    
        //let's get it back
        this.objAttr=$.data(document.body,this.id);
    
       }
      }
     );
    }
     </head>
     <body>
       <span id="foo" customattr="foo_msg">click for foo_msg</span>
       <span id="bar" customattr="bar_msg">click for bar_msg</span>
     </body>
    <html>