从服务器显示 Telerik RadWindow,同时保持滚动位置



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

我通过设置"回发时维护滚动位置"来保持回发滚动位置:

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

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

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

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

我尝试以不同的方式显示 RadWindow 2,但两者都有相同的结果

方式1:

Window.VisibleOnPageLoad = true;

方式2:

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);

show() 左右添加一个超时,以便在打开 RadWindow 之前进行滚动。否则,将发生以下情况:

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

  2. 辐射窗口显示,在当前视口中居中

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

下面是一个示例:

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

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

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

相关内容

  • 没有找到相关文章

最新更新