我能保存在瀏覽器頁面位置點擊按鈕或其他一些動作(回發後)保存頁面位置(在瀏覽器垂直滾動...)點擊按鈕或其他一些動作後
後,我需要它的頁面在我的DBGrid中更改msdn.microsoft.com上的事件 - 當我更改Tab C# - > C++時,它不會刷新整個頁面,而且我仍然處於瀏覽器中的相同位置。
我能保存在瀏覽器頁面位置點擊按鈕或其他一些動作(回發後)保存頁面位置(在瀏覽器垂直滾動...)點擊按鈕或其他一些動作後
後,我需要它的頁面在我的DBGrid中更改msdn.microsoft.com上的事件 - 當我更改Tab C# - > C++時,它不會刷新整個頁面,而且我仍然處於瀏覽器中的相同位置。
您可以通過在ASPX文件的頁面指令中指定MaintainScrollPositionOnPostback =「true」來完成此操作。
例如:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MySite.MyPage" MaintainScrollPositionOnPostback="true" %>
享受,
Koby
回到我的1.1項目中,我通過隱藏文本框和一些JavaScript來完成這項工作。
首先,您需要跟蹤頁面上滾動條的位置。
document.body.onscroll = function(){
document.getElementById('hiddentextboxid').value =
document.body.scrollLeft + '|' + document.body.scrollTop;
}
其中hiddentextboxid是你放置在頁面上隱藏的文本框的客戶端ID。
其次,當頁面再次顯示時,您需要重置滾動位置。我在做這個第一步是發射一個javascript功能復位位置:
string sPosition = HttpContext.Current.Request.Form[hiddentextboxid];
if (sPosition != null && sPosition != "")
{
string[] sPos = sPosition.Split("|".ToCharArray());
StringBuilder strScript = new StringBuilder();
strScript.Append("<script language='Javascript'>\r\n");
strScript.Append("function ProcessScroll(){\r\n");
strScript.Append(" window.scrollTo(" + sPos[0] + ", " + sPos[1] + ");\r\n");
strScript.Append("}\r\n");
strScript.Append("</script>");
if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "Scroll"))
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Scroll", strScript.ToString());
}
然後我有了這個代碼塊來調用javascript函數在適當的時候:
sScript.Append("<script language='javascript'>\r\n");
sScript.Append("document.body.onload = function() {\r\n");
if (Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "Scroll"))
{
sScript.Append(" ProcessScroll();\r\n");
sScript.Append("}\r\n");
sScript.Append("</script>");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ProcessOnLoad", sScript.ToString());
}
我相信有一些更新,更有效的方法來完成這一部分。不過,我還沒有使用過這段代碼,因爲我通常會使用Ajax回發來避免這個問題。
阿賈克斯回發? – Cynede 2010-02-27 05:17:31
有關在ASP.NET中使用AJAX的更多信息,請參閱http://www.asp.net/ajax/。 – 2010-02-27 19:41:29