在PostBack上设置滚动位置

时间:2011-06-22 20:40:40

标签: c# asp.net postback positioning

我正在用asp.net c#代码编写。

我想控制帖子背面的页面位置。 MaintainScrollPositionOnPostback都不等于true或false,是我想要的。真实太低而虚假太高。另一个问题是位置应该根据按压控制而不同。第三个问题是MaintainScrollPositionOnPostback = true在I.E中起作用。但不是在Firefox中。

想要我想要与href相关的标签类似,例如<a href="#body2">除了代码。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:3)

假设您可以使用JQuery,请尝试以下操作:

http://abeautifulsite.net/blog/2010/01/smoothly-scroll-to-an-element-without-a-jquery-plugin/

只需注入脚本并传递触发回发事件的控件的ID。

如果由于某种原因你不能使用jquery,这是一个不太优雅的方法:

http://clifgriffin.com/2008/10/14/using-javascript-to-scroll-to-a-specific-elementobject/

修改(样本):

以下是使用jquery方法的直接html的示例,假设您在与html页面相同的文件夹中有一个名为jquery.js的脚本文件。

<html>
<head>
    <script type='text/javascript' src='jquery.js'></script>
    <script type='text/javascript'>
    $(document).ready(function() {
        $('html,body').animate({ 
            scrollTop: $('#scrollHere').offset().top 
            }, 0//increase for smooth, visible scroll
        );
    });
    </script>
</head>
<body>

<div style='width:100px; height:1000px; background-color:red;'>
top filler
</div>

<a id='scrollHere' href='#'>Scrolls to this element</a>

<div style="width:100px; height:1000px; background-color:blue;">
bottom filler
</div>

</body>
</html>

这是一个客户端方法的示例,您可以传递任何可见页面控件的“ClientID”属性,它将注册javascript以滚动到页面加载时的元素(假设jquery已在页面上注册,每个请求只注册一个呼叫):

private void ScrollToControl(string controlId)
{
    //scroll to button
    string script =
        "$(document).ready(function() {" +
            "$('html,body').animate({ " +
                "scrollTop: $('#" + controlId + "').offset().top " +
            "}, 0);" +
        "});";

    if (!Page.ClientScript.IsStartupScriptRegistered("ScrollToElement"))
        Page.ClientScript.RegisterStartupScript(this.GetType(), "ScrollToElement", script, true);
}

答案 1 :(得分:0)

如果你知道你想要窗口的特定像素值,那么你可以尝试在Javascript中使用window.scrollTo()函数。

window.scrollTo(0,0);

答案 2 :(得分:0)

按钮点击按住以保持页面滚动位置:

$("#Next").click(function() { $('html,body').animate(
{ scrollTop: $('.required').offset().top 
}, 0//increase for smooth, visible scroll ); });