回发后,我希望我的页面专注于gridview的子控件,但将页面滚动到另一个部分。 标准的myGridView.Focus(),在Page_Load或Page_prerender上调用,插入一个
WebForm_AutoFocus('myGridViewClientID');
在渲染的html中。 此功能还将滚动移动到所需位置
有什么建议吗?
我的尝试:使用Asp.NET注入的一些函数:
function FocusWithoutScroll(focusId) {
var targetControl;
if (__nonMSDOMBrowser) {
targetControl = document.getElementById(focusId);
}
else {
targetControl = document.all[focusId];
}
var focused = targetControl;
if (targetControl && (!WebForm_CanFocus(targetControl))) {
focused = WebForm_FindFirstFocusableChild(targetControl);
}
if (focused) {
try {
focused.focus();
}
catch (e) {
}
}
}
但是为了使用这个代码,我必须包含一些.axd资源文件:当你设置时,似乎ASP.NET自动包含它们 someControl.Focus(); 在您的服务器端代码中。但这又插入了 WebForm_AutoFocus( 'myGridViewClientID');
将页面滚动到错误的位置
答案 0 :(得分:0)
有一个客户端方法scrollIntoView,它滚动页面直到元素可见。您可以发出服务器端命令:
ClientScript.RegisterStartupScript(this.GetType(), "MyScript","document.getElementById('SecondElementID').scrollIntoView();", true);
其中'SecondElementID'是您要滚动到的元素的id。
演示:http://jsfiddle.net/v8455c79/ 此演示展示了如何在一个元素和页面滚动到另一个元素上设置焦点