【问题标题】:How can I scroll an ASP.NET page under control of the code-behind page?如何在代码隐藏页面的控制下滚动 ASP.NET 页面?
【发布时间】:2009-06-03 13:28:32
【问题描述】:

我有一个 ASP.NET 3.5 页面,其中包含一些 AJAX、一些验证器和一些在代码隐藏页面 (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 代码顶部的页面指令中。我真正想要的是让它 FALSE 片刻,以便页面在顶部重置 - 再次,仅当一切正常且仅针对此按钮(页面上还有其他按钮需要页面保留它是滚动位置)。

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    假设保存成功,您没有其他理由保持当前表单的状态,您可以简单地重定向到同一页面并传递成功标志。

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

    使用查询字符串参数使您的成功消息可见。

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

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2021-12-31
      • 2017-09-27
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多