当滚动到页面底部时显示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 之前进行滚动。否则,将发生以下情况:
-
回发返回,页面未滚动
-
辐射窗口显示,在当前视口中居中
-
滚动移位,因此您的 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 作为参数并调用它,只是为了让代码更具可读