1

我在更新面板中有一个选项卡容器。我想通过单击按钮将生成的选项卡添加到该容器。选项卡被添加。一次,下一次单击该按钮时,前一个选项卡将丢失,并由一个新选项卡替换它。如果可能的话,我想保留标签。这些选项卡稍后将根据单击的按钮填充控件。

我发现许多帖子建议必须在 PostBack 上重新创建标签,但它不起作用。我想我也不知道该怎么做。

我当前的 aspx 文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" ViewStateMode="Enabled">
    </asp:ScriptManager>

    <asp:Button ID="Button1" runat="server" Text="Add Tab" />
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" 
                    ViewStateMode="Enabled">
                </ajaxToolkit:TabContainer>
                <br />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
            </Triggers>
        </asp:UpdatePanel>

    </div>
    </form>
</body>
</html>

这是到目前为止的代码隐藏。

Imports AjaxControlToolkit

Public Class WebForm1
    Inherits System.Web.UI.Page

    Private Sub WebForm1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim newTab As TabPanel = New TabPanel
        Dim rand As New Random
        Dim exampleID As String = rand.Next(1000).ToString
        newTab.ID = exampleID
        newTab.HeaderText = exampleID
        newTab.Controls.Add(New LiteralControl(exampleID))
        TabContainer1.Tabs.Add(newTab)
        Label1.Text = Label1.Text + "<br />" + "Added tab " + newTab.ID.ToString 'Just here for output.
    End Sub

End Class

我确信当前打开的选项卡必须存储在某个地方并在更新面板的回发中重新创建,但就像我说的那样。我该把代码放在哪里,它是如何存储的?

任何帮助将非常感激!谢谢!

4

0 回答 0