2010-11-16 74 views
1

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

+0

你的意思是你的JavaScript和服务器端调用_doPostBack()你想知道你调用哪个updatepanel的_dopostback()? – Azhar 2010-11-16 11:05:24

+0

你想在服务器端或客户端知道这一点(如“来自JavaScript的建议”)? – Brad 2010-11-16 13:25:09

回答

3

使用隐藏域

分配值调用_doPostBack前()JavaScript和由该服务器上,您可以指定其中的UpdatePanel是回发。

1

我有一个web用户控件的自定义实现,我有一个管理器绑定到该字段,然后我用一个属性标记输入,以便我能够更容易地找到它 如果您找到一种方法来知道哪个updatePanels你有,那么你也可以做到这一点

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

它可能有一些bug,我冲上去离开,也许我会得到以后测试它今天

如果你把这个更新面板里面你应该看到它的工作

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

我假设'在JavaScript中'意味着......回传后 – 2011-05-05 20:08:24