Dis*_*ile 26 c# asp.net postback webforms
我有一个ASP.net WebForms页面,屏幕顶部有很多内容.它有一个链接按钮,将回发到页面并显示页面的另一部分.当页面刷新时,我想设置焦点并向下滚动到页面的这一部分.
我试过了
txtField.Focus()
Run Code Online (Sandbox Code Playgroud)
在我的代码后面,它将设置焦点并尝试在那里滚动,但然后滚动回到顶部.焦点仍然在我的文本框上,但屏幕的位置在最顶层.链接位于屏幕顶部,导致回发.我想滚动到屏幕的最底部.它会短暂地执行此操作,然后向右滚动到顶部.
我试过设置
Page.MaintainScrollPositionOnPostback = false;
Run Code Online (Sandbox Code Playgroud)
但这似乎也没有帮助.
有什么方法可以强迫它去特定的位置吗?当我使用按钮或链接按钮回发时,是否可以在URL中添加锚标记?
The*_*max 33
Page.MaintainScrollPositionOnPostBack = true;
应该让你回到屏幕上的相同位置,但是你可以使用AJAX,或者你可以SetFocus()
在回发后专注于特定的控件:
http://msdn.microsoft.com/en-us/library/ms178232.aspx
dvd*_*dmn 31
如果您有该位置的锚点,则可以使用以下代码:
Page.ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#MOVEHERE';", true);
Run Code Online (Sandbox Code Playgroud)
在你的情况下,我建议你保持Page.MaintainScrollPositionOnPostBack的默认值,并使用纯javascript滚动功能
function scrollToDiv()
{
document.getElementById('yourDiv').scrollIntoView();
}
Run Code Online (Sandbox Code Playgroud)
并在页面启动时调用它,稍微延迟1ms(再次使用纯javascript)
setTimeout(scrollToDiv, 1);
Run Code Online (Sandbox Code Playgroud)
最后用后面的C#代码调用它,使用RegisterStartupScript(在加载所有页面后执行js):
ScriptManager.RegisterStartupScript(Page, typeof(Page), "ScrollToADiv", "setTimeout(scrollToDiv, 1);", true);
Run Code Online (Sandbox Code Playgroud)
像这样,它将绕过任何asp自动滚动