2010-10-12 25 views
0

我有一個aspx頁面,上面有一個ajax面板和一個按鈕。 這是我的按鈕:Ajax Div定位

<asp:Button ID="Button1" runat="server" OnClientClick="javascript:SetValues()" onclick="Button1_Click" Text="Button" /> 

當我按一下按鈕我稱之爲setValues方法上的OnClientClick事件()函數。該功能將改變屏幕上div的位置。 Button1_Click方法正在服務器上運行,並用數據加載div。

問題是,「SetValues()」所做的工作被取消,因爲從服務器回來後的div將回到它在屏幕上的原始位置。

+0

你知道動態網頁是如何工作的嗎?除非您將它們都傳輸到服務器並返回到客戶端,否則您不能期望客戶端更改保留在回發中。 – jcolebrand 2010-10-12 19:57:24

+0

那麼有沒有一種方法可以保持會話中的值,使用JavaScript,所以服務器端代碼也將能夠看到這些值? – 2010-10-12 20:01:50

回答

0

一個選項是在ajax面板更新後(我假設你在這裏使用UpdatePanel)調用SetValues()。

<script type="text/javascript"> 
function EndRequestHandler(sender, args) { 
    if (args.get_error() == undefined) 
    { 
     SetValues(); 
    } 
    else 
    { 
     alert("There was an error" + args.get_error().message); 
    } 
} 
function load() { 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
} 
</script> 

當頁面加載到註冊Javascript事件時,您將需要觸發加載函數。

<body onload="load()"> 
+0

完美。 TY .... – 2010-10-12 20:29:49

0

使用隱藏的服務器控件並從隱藏控件讀取/寫入值。價值觀將在回帖後持續存在。

1

你想讓服務器端發生什麼?你有沒有考慮過做ajax postback來發送/處理服務器上的數據?這將允許您的客戶端JS更改UI,而服務器接收並處理您的數據。

有關使用jQuery觸發服務器端處理的更多信息,請參閱此article

+0

非常有幫助。謝謝。 – 2010-10-12 20:58:00