2009-05-27 46 views

回答

1

同時呼籲__doPostBack直接將工作,這不是因爲這個名字的完美解決方案該功能嚴格來說是.Net框架的實現細節。

更好的解決方案是使用ClientScriptManager.GetPostBackEventReference,它爲您提供了一個更具彈性的界面來實現相同的功能。請注意0​​和GetCallBackEventReference不是一回事 - 前者會導致頁面重新加載(部分或全部,取決於您的UpdatePanel設置),而後者則不會。

0

我們使用的模擬回傳並引起的UpdatePanel的__doPostBack()方法來刷新

__doPostBack('controlName',''); 

不要忘記,該控件的名稱是它的HTML ID(這很可能包含美元等),而不是隻是它的ASP.NET ID。

據我所知,您可以調用此方法並傳入隱藏的價值領域,或者說,它是在div。

+0

我試圖這樣稱呼它 __doPostBack('<%= Upd atePanel1.ClientID%>」, ''); 那是怎麼調用的方法? – Eric 2009-05-27 17:19:22

+0

-1:直接調用__doPostBack是不好的做法。 – 2009-05-27 17:20:36

1

最簡單的方法是從客戶端調用__doPostBack。

在客戶端button1_onclick方法,調用:

__doPostBack('<%=UpdatePanel1.ClientID %>','Refresh:0,1,2'); //refresh update panel 

在頁面後面添加下面的事件處理程序來捕獲後回電話:

protected void UpdatePanel1_Load(object sender, EventArgs e) 
{ 
    string arg = Request.Form["__EVENTARGUMENT"]; 

    if (string.IsNullOrEmpty(arg)) return; 

    if (arg.StartWith("Refresh") 
    { 
     //parse data first then do your thing here... 
    } 
} 

當然,不要忘了線事件到上述方法:

protected void Page_Init(object sender, EventArgs e) 
{   
    UpdatePanel1.Load += new EventHandler(UpdatePanel1_Load); 
} 
相關問題