2011-06-22 85 views
1

我正在写asp.net c#代码。在PostBack上设置滚动位置

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

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

感谢您的任何建议。

回答

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> 

这里是你可以通过任何可见的页面控制的“客户端ID”属性,它将寄存器的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); 
} 
+0

+1 - 只需使用jQuery( - : – Murph

+0

jQuery是好,但我无法弄清楚如何使用这个,你能不能给我更多。详细信息。一个工作的例子会很好。 –

+0

感谢您的示例。我尝试了您所说的,选项2.我将该调用放在按钮的单击事件中。我得到此错误“Microsoft JScript运行时错误:'offset() .top'为空或不是对象“ –

0

如果你知道你想要你的窗口是那么你可以尝试使用JavaScript中window.scrollTo()函数,具体的像素值。

window.scrollTo(0,0); 
0

维持通过点击按钮页面滚动位置:

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