2010-11-16 75 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

相關問題