-->

在ASPX页面的刷新记住活动标签(Remembering active tab on refresh

2019-10-29 22:04发布

我有一个ASPX页面设置,从本地SQLite数据库加载和显示动态数据。 由于该数据是从一个单独的C#应用​​程序写入到数据库中,我已经建立了我的ASPX页面,每30秒刷新当数据库标记本身积极接收新数据。

在我的ASPX页面,我有几个不同的TabPanels每个代表数据的不同视图中的TabContainer的。 现在,当我的页面被刷新,激活的标签模块被重置为在我的ASPX页面作为ActiveTabIndex的一组。

我在想,如果有一个简单的方法来坚持这片被记住。

谢谢!

编辑补充代码示例

MyPage.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPageFile.master" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="content" Runat="Server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager" runat="server" />
    <asp:TabContainer ID="tabContainer" runat="server" ActiveTabIndex="1" CssClass="myTabStyle" Visible="true">
        <asp:TabPanel ID="tab1" runat="server" HeaderText="Tab 1">
            <ContentTemplate>
                <p>Hello</p>
            </ContentTemplate>
        </asp:TabPanel>
        <asp:TabPanel ID="tab2" runat="server" HeaderText="Tab 2">
            <ContentTemplate>
                <asp:PlaceHolder ID="tab2placeholder" runat="server" />
            </ContentTemplate>
        </asp:TabPanel>
        <asp:TabPanel ID="tab3" runat="server" HeaderText="Tab 3">
            <ContentTemplate>
                <asp:TabContainer ID="tab3content" runat="server" ActiveTabIndex="0" CssClass="myTabeStyle" />
            </ContentTemplate>
        </asp:TabPanel>
        <asp:TabPanel ID="tab4" runat="server" HeaderText="Tab 4">
            <ContentTemplate>
                <p>Blah.</p>
            </ContentTemplate>
        </asp:TabPanel>
    </asp:TabContainer>
</asp:Content>

MyPage.aspx.cs

public partial class MyPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ...
        if (isInProgress)
        {
            Response.AddHeader("Refresh", "30");
        }

        LoadTab1();
        LoadTab2();
        LoadTab3();
        LoadTab4();
        ...
    }
}

Answer 1:

尝试把UpdatePanel的在TabPanels内。 如果您发布ASPX的代码示例会更容易帮助。



Answer 2:

如果你正在做全回发所有的时间,然后将其保存在你的ASP.NET会话。 例如

Session["ActiveTab"] = index;

然后检索它:

int? activeTab = Session["ActiveTab"] as int?;

否则使用jQuery AJAX刷新数据,是在我的经验,一个更好的方法去比使用UpdatePanel的。 但它看起来像您已经承诺MS阿贾克斯与麦克的建议,使用AJAX定时器来代替刷新头这么走了。



文章来源: Remembering active tab on refresh of ASPX page