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

时间:2010-11-16 10:55:15

标签: .net ajax asp.net-ajax

假设我有3个更新面板。我怎样才能检测到哪个更新面板导致了JavaScript的部分回发。

2 个答案:

答案 0 :(得分:3)

使用隐藏字段

在javascript中调用_dopostback()之前分配值,在服务器上,您可以指定哪个updatepanel是回发。

答案 1 :(得分:1)

我有一个Web用户控件的自定义实现,我有一个绑定到该字段的管理器,然后我用一个属性标记输入,以便我能够更容易地找到它 如果您找到了解自己拥有哪个更新面板的方法,那么您也可以这样做

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

它可能有一些错误,我急忙离开,也许我会在今天晚些时候进行测试

如果你把它放在更新面板中,你应该看到它正常工作

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

Finallu,我做的就是这样的事情

<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>