如何导航到回发部分?

时间:2016-10-12 13:46:04

标签: html asp.net

我的aspx页面上有多个部分。

<ul>
<li class="tab-current"><asp:HyperLink ID="home" runat="server" Text="Home" NavigateUrl="#section-1"/></li>
<li><asp:HyperLink ID="events" runat="server" Text="Events" NavigateUrl="#section-2"/></li>
<li><asp:HyperLink ID="finance" runat="server" Text="Finance" NavigateUrl="#section-3"/></li>
<li><asp:HyperLink ID="merchandise" runat="server" Text="Merchandise" NavigateUrl="#section-4"/></li>
<li><asp:HyperLink ID="tasks" runat="server" Text="Tasks" NavigateUrl="#section-5"/></li>
<li><asp:HyperLink ID="profile" runat="server" Text="Profile" NavigateUrl="#section-6"/></li>
</ul>

在其中一个部分,我有一个按钮和一个gridview控件。在按钮上单击gridview将加载一些数据,但按钮单击会导致回发并带我第1节。我希望在回发后留在那个gridview上。

感谢。

2 个答案:

答案 0 :(得分:1)

MaintainScrollPositionOnPostback="true"添加到Page指令。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="myPage.aspx.cs" MaintainScrollPositionOnPostback="true" %>

或者,如果您希望在所有页面上使用此页面,则可以在<system.web>节点下的Web.Config中进行设置。

<pages validateRequest="true" maintainScrollPositionOnPostBack="true" enableViewStateMac="true" enableEventValidation="true" viewStateEncryptionMode="Always"/>

<强>更新

要确保在PostBack之后显示正确的选项卡,您需要调用客户端功能。

首先在onclick="setTabIndex(1)"部分添加这样的内容。这也可以是onmouseover,对类名等的绑定。

<asp:HiddenField ID="HiddenField1" runat="server" />

<script type="text/javascript">
    function setTabIndex(tab) {
        //store the tab number in a hidden field so you can access it in code behind
        document.getElementById("<% = HiddenField1.ClientID %>").value = tab;
    }

    function showTab(tab) {
        alert(tab);
        //open the correct tab
    }
</script>

在代码后面调用客户端函数showTab

        if (IsPostBack)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showTab", "showTab(" + HiddenField1.Value + ")", true);
        }

答案 1 :(得分:1)

您可以做的一件事就是传回当前页面的网址,并在网址上附加部分ID锚点(见下文)。

示例:

依旧......

希望这有帮助。

克雷格