假设我有3个更新面板。我怎样才能检测到哪个更新面板导致了JavaScript的部分回发。
答案 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>