天天看點

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

方法一:

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

"防止頁面滾動"

方法二:

Page.SmartNavigation = true;

有可能會造成你頁面JavaScript 出錯,這是ASP.NET 的一個BUG

方法三:

利用<大眼睛>的原理,我把過程簡化了一下,分三部分:

一、

在<form>與</form>之間插入<input type="hidden" name="__SCROLLPOS">,用以記錄頁面的目前滾動位置;

二、

給<body>起個名字,比如:<body id="theBody">,同時編寫body的onscroll事件,總體如下:

<body id="theBody" onload="bodyload()" onscroll="document.all["__SCROLLPOS"].value = theBody.scrollTop;">

三、

在Page_Load事件中加入如下代碼(vb.net),作用在于ie顯示該頁面時,馬上重新定位原來的滾動位置:

  Dim js As String

  js = "<script language=""javascript"">function bodyload() {"

js &= "js &= "theBody.scrollTop = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "

js &= "document.forms[0].__SCROLLPOS.value = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "

js &= "}</script>"

  Response.Write(js)

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

Not在此把Not在做一個項目時的解決方法拿出來與大家共享。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

Not的思路是事件執行完後寫段腳本,讓頁面自動滾動到重新整理頁面之前的控件處,減少頁面重新整理帶來的不便。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

比如按了一個按鈕後,腳本會自動将頁面自動滾動到這個按鈕的位置。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

寫段腳本的事情Not用了一個ScriptHelper的類來搞定,這個類有個GetViewControlScript(string controlName)的方法,它傳回是一段用戶端的腳本,傳入的參數就是這個控件的ID。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

ScriptHelper類代碼:

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 /// <summary>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 /// 提供一些産生頁面腳本的方法

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 /// </summary>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 public class ScriptHelper

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 {

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  /// <summary>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  /// 擷取用戶端檢視控件的腳本

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  /// </summary>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  /// <param name="controlName"></param>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  /// <returns>腳本代碼</returns>

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  public static string GetViewControlScript(string controlName)

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  {

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   //建立用戶端函數ViewObj

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   string script = "\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "<script language=\"javascript\">\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "function ViewObj(objName)\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "{\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "var obj = document.all.item(objName);\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "if (obj != null)\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "\tobj.scrollIntoView();\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "\tobj.focus();\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "}\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   //建立用戶端函數ToDo

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "function ToDo()";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += string.Format("setTimeout(\"ViewObj('{0}')\",1000);\n", controlName);

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "window.onload = ToDo;\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   script += "</script>\n";

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

   return script;

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

  }

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 }

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

使用示例:

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

為了友善輸入腳本,我在頁面上放了個Label:lblScript,并把lblScript的EnableViewState屬性和Visible屬性設成False。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

然後在lblScrpt的Click事件的操作代碼後添加輸入腳本的代碼,如下所示:

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

private void btnSave_Click(object sender, System.EventArgs e)

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

{

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 project.UpdateProjectInfo(ds);

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

 lblScript.Text = ScriptHelper.GetViewControlScript("btnSave");

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

}

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

在點選btnSave按鈕後,頁面會自動滾動到btnSave的位置,減少了頁面重新整理帶來的不便。

頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?
頁面一postback,它就顯示頁面的最頂端,怎樣讓它定位在某一位置?

<b></b>

<b>本文轉自高海東部落格園部落格,原文連結:http://www.cnblogs.com/ghd258/archive/2005/10/12/253407.html,如需轉載請自行聯系原作者</b>

繼續閱讀