2012-10-30 32 views
1

我有兩個網頁寫在asp.net中,vb.net是後面的代碼。當我點擊一頁中的下一個按鈕時,應該出現第二頁。第二頁是巨大的,當我點擊下一個按鈕時,頁面即將到來,但它的焦點是底部,爲了頂部,我需要使用滾動,我想要的是將焦點放在頂部。下一頁在asp.net中向下滾動

+0

它應該具有焦點頂部加載。你從第1頁到第2頁的鏈接是否包含錨點(#)? – Darren

+0

號碼是報告頁。我正在使用response.redirect(「page2.aspx」,false) –

回答

1

您可以使用此script,以便您的頁面將滾動到頁面上的特定控件。

代碼應該放在CodeBehind中。 只需選擇一些控件,它位於頁面頂部,它應該完成工作。

我應該注意到讓頁面滾動到底部是一種不尋常的行爲,默認情況下不應該發生。你應該首先檢查它爲什麼會發生。

更新:

更新的代碼,因爲使用的方法有過時...

private void FocusControlOnPageLoad(string ClientID) 
{ 

      ClientScript.RegisterClientScriptBlock(this.GetType(), "FocusOnControl", 

      @"<script> 

       function ScrollView() 

       { 
       var el = document.getElementById('" + ClientID + @"') 
       if (el != null) 
       {   
        el.scrollIntoView(); 
        el.focus(); 
       } 
       } 

       window.onload = ScrollView; 

       </script>"); 

} 

用法:

protected void Page_Load(object sender, EventArgs e) 
{ 
    FocusControlOnPageLoad(yourcontrol.ClientID); 
} 

等效VB.Net:(感謝到@Mahyar)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    FocusControlOnPageLoad(yourcontrol.ClientID) 
End Sub 
Private Sub FocusControlOnPageLoad(ByVal ClientID As String) 
    Dim script As String = _ 
     "<script>" + _ 
      "function ScrollView()" + _ 
      "{" + _ 
       "var el = document.getElementById('" + ClientID + "')" + _ 
       "if (el != null)" + _ 
       "{" + _ 
       "el.scrollIntoView();" + _ 
       "el.focus();" + _ 
       "}" + _ 
      "}" + _ 
      "window.onload = ScrollView;" + _ 
     "</script>" 
    ClientScript.RegisterClientScriptBlock(Me.GetType(), "FocusOnControl", script) 
End Sub 
+0

可以請你給vb.net中的代碼 –

+0

是啊..它沒有正確轉換。 –

+0

PeterJennings,@Mahyar在我的回答中添加了VB.Net等價物 – Blachshma

0

如果你有ASPX,然後只需標記之前添加此腳本頁的末尾:

<script type="text/javascript"> 
    window.scrollTo(0,0); 
</script> 
+0

沒什麼區別。還是一樣的情況。我在代碼隱藏頁面中彈出頁面將以編程方式進行很多控制。顯示在第二頁中的控件數量在邏輯上有所不同。 –

+0

新增VB.net轉換爲Blachshma答案(編輯)..等待批准 – Mahyar

+0

已批准,謝謝@Mahyar! – Blachshma