使用ASP.NET的jQuery - 防止链接从滚动到页面顶部

时间:2016-07-22 21:28:47

标签: javascript jquery asp.net

我正在构建一个使用GridView控件的.NET应用程序。我正在使用LinkBut​​ton控件允许用户进入编辑模式。每当用户单击此按钮时,它都允许他按原样编辑条目;但是,它也会滚动回到页面顶部。显然,这并不理想;但是,我不能简单地使用event.PreventDefault()来消除这种行为。

我已经分配了班级" gridActionLinks"控制。当用户点击需要时,我需要发生链接操作,然后滚动。现在,它向下滚动到链接,然后执行默认链接行为(包括转到页面顶部)。有没有解决的办法?也就是说,有没有办法首先执行链接行为,然后滚动?

非常感谢!

剧本:

FRQ

aspx的片段:

  $(".gridActionLinks").click(function (event) {      


        $('html, body').animate({
            scrollTop: $(this).offset().top
        }, 100
        );


    });

一些aspx.cs:

 <asp:TemplateField HeaderText="">
          <ItemTemplate>
              <asp:LinkButton ID="detailsLink" runat="server" CommandName="Edit" CommandArgument="" Tooltip="Edit Record" CausesValidation="False" CssClass="gridActionLinks"><img src="../img/detailsIcon.png" /></asp:LinkButton>
                         <asp:LinkButton ID="deleteLink" CommandName="Delete" runat="server" Tooltip="Delete Record" CssClass="gridActionLinks" CausesValidation="False"><img src="../img/deleteIcon.png" /></asp:LinkButton>
          </ItemTemplate>
          <EditItemTemplate>
                            <asp:LinkButton ID="insertLink" CommandName="Update" runat="server" Tooltip="Save" CausesValidation="False"><img src="../img/saveIcon.png" /></asp:LinkButton>
                         <asp:LinkButton ID="cancelLink" CommandName="Cancel" runat="server" Tooltip="Cancel" CausesValidation="False"><img src="../img/cancelIcon.png" /></asp:LinkButton>
          </EditItemTemplate>
          <FooterTemplate>
                    <asp:LinkButton ID="insertLink" runat="server" CommandName="Insert" Tooltip="New Entry"><img src="../img/saveIcon.png" /></asp:LinkButton>
                         <asp:LinkButton ID="cancelLink" runat="server" CommandName="CancelEntry" Tooltip="Cancel"><img src="../img/cancelIcon.png" /></asp:LinkButton>          </FooterTemplate>
      </asp:TemplateField>

1 个答案:

答案 0 :(得分:1)

由于您的链接按钮已标记为runat="server",因此它们将生成回发事件,并且页面将刷新。如果您希望在回发后保持页面位置,请使用page directive

<%@ Page Language="c#" CodeBehind="MyPage.aspx.cs" AutoEventWireup="false" Inherits="MyPage" MaintainScrollPositionOnPostBack="true"%>

set it in code behind

this.MaintainScrollPositionOnPostBack = true;