Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用asp.net按钮控件滚动窗口时出现问题_Javascript_Asp.net - Fatal编程技术网

Javascript 使用asp.net按钮控件滚动窗口时出现问题

Javascript 使用asp.net按钮控件滚动窗口时出现问题,javascript,asp.net,Javascript,Asp.net,在web应用程序中,我尝试通过使用javascript将y轴高度增加到500来垂直滚动窗口,该javascript附加到id为Button1的asp.net按钮控件的OnClientClick事件 我使用的脚本是 <script language="JavaScript"> function scrollToWindow() { window.scrollTo(0,500); } </script> 函数scrollToWindow() { 窗口。滚动到(05

在web应用程序中,我尝试通过使用javascript将y轴高度增加到500来垂直滚动窗口,该javascript附加到id为Button1的asp.net按钮控件的OnClientClick事件

我使用的脚本是

<script language="JavaScript">

function scrollToWindow()
{
  window.scrollTo(0,500);
}

</script>

函数scrollToWindow()
{
窗口。滚动到(0500);
}
按钮代码如下所示

<asp:Button ID="Button1" runat="server" 
Text="Scroll to bottom" OnClientClick="scrollToWindow()" />


如果我运行此页面并单击该按钮,则页面滚动无法正常工作。当我将警报放入脚本并调试时,我发现页面实际上正在滚动到0500,但由于某些原因,它的呈现再次回到了正常位置。有人能帮我解决这个问题并告诉我原因吗???

由于您在页面上放置了一个按钮,所以整个页面可能会发回。实质上,点击它将“刷新”页面,这将导致您看到的结果。按照您的意愿运行window.scrollTo()更适合于链接或其他内容。您可以在asp:HyperLink中运行JavaScript,或者只使用标准的HTML锚定标记来完成任务。

单击按钮(回发)后,您的页面将重新加载默认设置。OnClientClick不会阻止它,除非您在javascript代码中阻止回发(
返回false;
,最后)。

它重置的原因是asp按钮在页面上执行提交操作。因此,它首先执行javascript onclick,然后回发到服务器,这会导致页面刷新

 <asp:ScriptManager runat="server" ID="ScriptManager1" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <asp:Button runat="server" ID="Button1" Text="Button"
     onclick="Button1_Click" OnClientClick="alert('hello');" />
    </ContentTemplate>
    </asp:UpdatePanel>
解决方案1: 在aspx文件顶部的页面指令中,可以添加一个设置以保持滚动位置:

<%@ Page  MaintainScrollPositionOnPostback="True" %>

在这种情况下,您可以像最初一样定义按钮:

<asp:Button ID="Button1" runat="server" 
 Text="Scroll to bottom" OnClientClick="scrollToWindow()" />

注意:此设置在Safari和Google Chrome中不起作用,但在其他主要浏览器中起作用(IE5+FirefoxOpera

解决方案2: 要使其与Safari
和Google Chrome配合使用,您可以改为使用AJAX来防止整页刷新

 <asp:ScriptManager runat="server" ID="ScriptManager1" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <asp:Button runat="server" ID="Button1" Text="Button"
     onclick="Button1_Click" OnClientClick="alert('hello');" />
    </ContentTemplate>
    </asp:UpdatePanel>


只需确保所有因按钮单击而更改的GUI都需要是由按钮单击触发的相同的
的一部分。

我还需要一些服务器端代码来执行此操作。所以我可以使用asp.net按钮控件。即使发生回发,是否有办法保持滚动位置?谢谢您的代码建议。它似乎工作得很好。谢谢你的想法。我试过使用return-false;在javascript的末尾,但输出仍然相同。。即使发生回发,如何保持滚动位置?您可以将滚动位置存储在ViewState中,并在页面加载后在javascript中进行设置。jQuery示例:
$(document).ready(函数(){//scrolling code})