如何在代码隐藏页面的控制下滚动ASP.NET页面?

时间:2009-06-03 13:28:32

标签: asp.net vb.net

我有一个带有一些AJAX的ASP.NET 3.5页面,一些Validators和一些在代码隐藏页面(VB.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 - 添加控件似乎没有用,所以我试着把原始代码放进去执行ad hoc:

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指令中。我真正喜欢的是将这个错误做一会儿,以便页面重置在顶部 - 再次,只有当一切正常并且仅用于此按钮时(页面上还有其他按钮需要页面保持它是滚动位置)。

1 个答案:

答案 0 :(得分:0)

假设成功保存,您没有其他理由维持当前表单的状态,您只需重定向到同一页面并传递成功标记。

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

使用querystring参数可以显示您的成功消息。

您可能需要更有创意才能构建重定向网址以捕获您正在编辑的项目,但这可能对您有用。