使用WebUserControl实现MaintainScrollPositionOnPostBack

时间:2013-08-17 18:17:17

标签: c# javascript asp.net url postback

我在WebUserControl(.aspx)页面中包含WebForm(。ascx)页面。

WebUserControl有一个Button,点击它后,某些数据将以HTML格式提取并附加到DIV

附加数据有一个ID。

<div id="1234">
</div>

我要做的是让浏览器在获取数据后滚动到这个新附加的div。

所以我在Page Load方法中添加了以下内容。

if (Page.IsPostBack)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#" + LastIDField.Text + "';", true);
}

MaintainScrollPositionOnPostBack="false"

中不允许添加WebUserControl
  

解析属性'maintaincrollpositiononpostback'时出错:输入   'System.Web.UI.UserControl'没有名为的公共属性   'maintainscrollpositiononpostback'。

所以我将其添加到WebForm页面中,其中包含此WebUserControl

PostBack之后,URL是正确的,它包含“#”加上ID,但浏览器没有滚动到它(在Chrome和Firefox上测试过),我该如何修复它?

1 个答案:

答案 0 :(得分:0)

您可以在控件的代码中实现自己的get / set属性“maintaincrollpositiononpostback”,这样它就可以作为控制之外的属性使用。如果设置为true,则执行客户端脚本以调用Div的.scrollIntoView()方法将其滚动回视图。

或者,如果它是像Label这样的服务器端控件,只需在C#代码中调用它的.focus()方法。