2011-07-05 92 views
9

我有一些與asp.net和更新面板的麻煩。問題是,每次從更新面板發生部分回發時,頁面將滾動回頂部。在我的大部分頁面上,這並不是一個大問題,但在一些頁面上可能會變得很長。然後,當用戶在頁面底部時,我會在其中顯示帶有RadListView的jQuery彈出窗口,並且用戶可以在此列表中選擇元素。但點擊這個元素會導致部分回發並跳轉回頁首。從更新面板異步回發後保持滾動位置

我已經通過互聯網瞭解,找不到任何解決方案,我的問題。當然設置MaintainScrollPositionOnPostback什麼都不做。

有沒有人知道任何可以幫助我處理這個問題的東西?

乾杯, PAKO

+1

重複:http://stackoverflow.com/questions/5288682/maintain-panel-scroll-position-on- partial-postback-asp-net – Despertar

+0

...或[Async postback之後重置滾動位置 - ASP.NET](http://stackoverflow.com/questions/616210/reset-scroll-position-after-async-postback-asp-淨) – Bergi

回答

0

使用一些控件的ID在轉發和使用JQuery回發完成後滾動。

您可以根據它們生成的格式獲取某些控件的ID。

1

對此我有一點小小的解決方法,我很久以前就在ERP中使用過。不知道它是否是最好的解決方案,但它的工作原理。

我不知道你是否使用自定義頁面類或默認System.Web.UI.Page之一,但是,我會嘗試向你解釋你是如何做到的,然後你找到了最好的方法來實現它你的環境好嗎?

例如,您將創建一個HiddenField,ID爲「hfScrollPosition」。

然後,您將創建一個javascript事件:document.onscroll或類似的事件,並且在事件內部您將更新隱藏字段以獲取當前滾動位置。例如: document.getElementById("hfScrollPosition").value = document.documentElement.scrollTop;

這樣做,您將擁有一個ASP.NET控件根據主體滾動位置更新其值的方式。所以,當你的頁面一定的控制,使回發,你可以把下面的JavaScript代碼在Page_Load事件:

document.documentElement.scrollTop = document.getElementById("hfScrollPosition").value;

所以,每次你的頁面得到一個回傳,身體滾動位置將被正確地更新。


編輯:我做了一個小提琴來模擬它: https://jsfiddle.net/j26fpgzo/

相關問題