0

在滚动到页面底部时显示 RadWindow 时,窗口会呈现在页面顶部,我必须向上滚动才能看到窗口。

我通过设置'MaintainScrollPositionOnPostback'来保持回发滚动位置:

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs"

我有一个 RadListView,其中 ItemTemplate 中有一个按钮。单击该按钮时,我会显示一个 RadWindow 模式。

问题是如果我滚动到页面底部并单击按钮,页面会在页面顶部显示窗口,但随后会向下滚动到用户滚动的位置(由于 MaintainScrollPositionOnPostback)。所以窗口显示在屏幕外,直到用户向上滚动

如何在回发时显示用户滚动的 RadWindow?(不在页面顶部)

我尝试过以 2 种不同方式显示 RadWindow,但结果相同

方式一:

Window.VisibleOnPageLoad = true;

方式二:

string script = "function f(){$find(\"" + RadWindow1.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);
4

1 回答 1

1

在打开 RadWindow 之前添加一个超时show()以让滚动发生。否则,会发生以下情况:

  1. 回发返回,页面不滚动

  2. RadWindow 出现,在当前视口中居中

  3. 滚动移位,因此您的 RadWindow 不在您期望的位置

这是一个例子:

string script = "function f(){setTimeout(function(){$find(\"" + RadWindow1.ClientID + "\").show(); },111);Sys.Application.remove_load(f);}Sys.Application.add_load(f);";

您可以在其中调整我为说明目的添加的 111 毫秒超时。使用 0 作为参数也可能就足够了。老实说,我不知道卷轴移动需要多长时间。

顺便说一句,我将在标记中创建一个 JS 函数,它将 RadWIndow 的 ID 作为参数并调用它,只是为了使代码更具可读性

于 2016-06-14T12:44:57.993 回答