1

我已经设置了一个 ASPX 页面,可以加载和显示来自本地 SQLite 数据库的动态数据。由于数据是从单独的 C# 应用程序写入数据库的,因此我将 ASPX 页面设置为在数据库将自身标记为主动接收新数据时每 30 秒刷新一次。

在我的 ASPX 页面上,我有一个 TabContainer,其中包含几个不同的 TabPanel,每个 TabPanel 代表不同的数据视图。现在,当我的页面被刷新时,活动选项卡面板被重置为我的 ASPX 页面中设置的一个作为 ActiveTabIndex。

我想知道是否有一种简单的方法可以坚持记住哪个选项卡。

谢谢!

编辑添加代码示例

我的页面.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>

我的页面.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();
        ...
    }
}
4

2 回答 2

1

尝试将 UpdatePanels 放入 TabPanels 中。如果您发布 ASPX 的代码示例,它会更容易提供帮助。

于 2010-06-04T04:29:01.643 回答
1

如果您一直在执行完整的回发,请将其保存在您的 ASP.NET 会话中。例如

Session["ActiveTab"] = index;

然后检索它:

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

否则,根据我的经验,使用 jQuery ajax 刷新数据是比使用 UpdatePanels 更好的方法。但看起来您已经致力于 MS Ajax,因此请按照 Mike 的建议使用 ajax 计时器而不是刷新标头。

于 2010-06-04T08:05:46.253 回答