2009-06-03 52 views
1

我有一個ASP.NET 3.5頁面,帶有一些AJAX,一些驗證器和一些在代碼隱藏頁面(VB.NET)中完成的業務規則驗證。如何在代碼隱藏頁面的控制下滾動ASP.NET頁面?

當檢測到錯誤時,驗證器將焦點設置爲「有問題」控件。

當違反業務規則,我用下面的代碼來生成「對飛」一些JavaScript並執行它模擬的WinForms「MessageBox.Show」功能:

Sub DisplayMessages() 
    Dim lblError As New Label 
    lblError.Text = "<script language='javascript'>" & Environment.NewLine & "window.alert('" 
+ strError + "')</script>" 
    Page.Controls.Add(lblError) 
    strError = "" 
End Sub 

(及相應的必要時調用該子例程)

現在,當用戶點擊「保存」按鈕並且一切正常時,頁面保持向下滾動到保存按鈕所在的底部。我想通過將頁面滾動回頂部向用戶表明事情已成功完成。

我想以前使用JavaScript與另一子程序適應這一點 - 增加控制似乎沒有工作,所以我想只是把原代碼執行專案:

Sub ScrollPageToTop() 
    Dim strScroll As String 
    strScroll = "<script language='javascript'>" & Environment.NewLine & "window.scrollTo(0,0);</script>" 
    ClientScript.RegisterStartupScript(Me.GetType, "ScrollToTop", strScroll.ToString) 
End Sub 

在「btnSave.Click」代碼的末尾,如果一切正常,調用該子例程。

我得到的是頁面滾動到頂部,然後返回到保存按鈕被點擊時的位置。

由於各種原因,'MaintainScrollPositionOnPostback ='True''位於.aspx代碼頂部的Page指令中。我真正喜歡的是讓這個FALSE一段時間,以便頁面重置在頂部 - 再次,只有當一切正常並且僅用於該按鈕時(頁面上還有其他按鈕需要頁面保留它是滾動位置)。

回答

0

假設成功保存,您沒有其他理由維護當前表單的狀態,您可以簡單地重定向到同一頁面並傳遞成功的標誌。

Response.Redirect ("CurrentPage.aspx?Saved=Y"); 

使用querystring參數使您的成功消息可見。

您可能需要更加富有創造性地構建重定向url來捕獲正在編輯的項目,但這可能適合您。

+1

有時最簡單的答案效果最好。 – David 2009-06-03 16:37:03

相關問題