我的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上。
感谢。
答案 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锚点(见下文)。
示例:
依旧......
希望这有帮助。
克雷格