2011-10-21 14 views
3

我已經花了近3個小時以下情況:asp.net - 用JS做AsyncPostBack

  • 我想觸發從JavaScript的AsyncPostBack但要能夠同時發送相同的參數,因爲我需要它在服務器端。

我已經嘗試了很多情況,但我無法找到一個明確的例子。

我有一個更新面板,當我按下里面的特定圖像按鈕時,會顯示一些彈出窗口。 (彈出最初是隱藏的,當請求完成後,display:none被刪除=>似乎罰款)

function BeginRequestHandler(sender, args) { 
    } 
    function EndRequestHandler(sender, args) { 
     document.getElementById('popup').style.display = ''; 
     document.getElementById('overlay').style.display = ''; 

    } 

好了,問題是,我需要做一個js函數做asyncPostBack因爲這個js函數將在點擊該控件的某個部分時從Flash控件中調用,所以我想模擬我在圖像上的點擊。(因爲單擊此彈出窗口會顯示在上面)

問題是我無法在任何地方找到這樣的例子。 這個js函數將會收到一個參數,所以當我做回發時,我希望能夠在服務器端獲得該參數。(這個參數似乎是主要問題= - 當我做回發時,如何將它發送到服務器?)。

對不起,如果我不是很清楚,但你能給我一些這方面或文件的文件?

非常感謝!

UPDATE: 請注意,第一個情況下,我已經做了,在我的UpdatePanel使用的ImageButton:

<asp:ImageButton ID="lnkDetails" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Logo") %>' 
          AlternateText='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnCommand="lnkDetails_Command" 
          CommandArgument='<%# DataBinder.Eval(Container.DataItem, "TenantID") %>' Text="Click"> 
         </asp:ImageButton></li> 

我只需要的是「模擬」這個點擊使用JavaScript使異步回發(因爲我可以從閃存中稱,閃光燈控制會打電話給我的回發js的方法)

回答

1

這應該工作得很好:

<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick='return doSomething(<%#Eval("SomeValue")%>);' /> 

編輯:嘗試用這種包裝的JavaScript函數:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { 
    doSomething = function(argument){ 
     __doPostBack("<%=ImageButton1.ClientID%>", argument); 
     return true; //don't know if you need this 
    } 
}); 

編輯:檢查您的ScriptManager並確保EnablePartialRendering設置爲true。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" ... /> 

在後臺代碼:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
{ 
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument); 

    if (source == ImageButton1) 
    { 
     string arg = eventArgument; 
    } 
} 
+0

謝謝!但有什麼辦法可以避免整個頁面的刷新?因爲我試過doPostBack並且整個頁面都刷新了... –

+0

嗯......它應該是異步的,因爲ImageButton在更新面板中。你可以發佈你的標記嗎? –

+0

謝謝詹姆斯,請看我的更新。基本上,你放在這裏我已經做了。現在我只想製作一個js方法來模擬所有這些東西(做asyncPostBack,發送特定的參數,並且讓我能夠在服務器端捕獲該參數)。 –

2

要啓動從JavaScript的異步回發:

__doPostBack(target,args) 

target是要定位的UpdatePanel的UniqueID。通常,只需傳遞一個空字符串就可以正常工作(將刷新所有自動更新面板)。

第二個參數是您可以用於任何想要的參數。

兩者都將被提供給您的服務器上:

Request.Form["__EVENTTARGET"] 
Request.Form["__EVENTARGUMENT"]