Я использую AjaxControlToolkit версии 4.1.40412.0, .NET 4.0, VS2010AJAXControlToolkit TabContainer - ошибка при динамическом добавлении/удалении вкладок?
Использование управления TabContainer Я хочу, чтобы добавить/удалить вкладки динамически, но, похоже, все мои динамические изменения не являются постоянными. Вот мой сценарий: я начинаю с tabcontainer с 1 tabpanel (hardcoded, т. Е. Добавляется во время разработки), а затем динамически добавляю дополнительные вкладки и скрываю исходную вкладку (время выполнения). Как и ожидалось, я вижу только новые вкладки на странице, однако всякий раз, когда я пытаюсь выбрать другую вкладку, весь элемент управления возвращается в свое состояние времени разработки, т. Е. Показывает только исходную вкладку, которая должна была исчезнуть, и новые вкладки нигде не найти. Что мне не хватает? Я думаю, что в качестве обходного пути я могу добавить 50 или около того вкладок во время разработки, а затем динамически скрывать/отображать, а не удалять/добавлять, но это кажется неуклюжим, неаккуратным и ненужным.
Вот мой код, если вы хотите, чтобы дублировать вопрос:
ASPX
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!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">
<div>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>
<asp:TabContainer ID="tcMain" runat="server" AutoPostBack="true" ScrollBars="auto" >
<asp:TabPanel ID="tbTab0" runat="server" HeaderText="Tab0"/>
</asp:TabContainer>
</div>
</form>
</body>
</html>
ASPX.VB
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
For i As Integer = 0 To 3
Dim ol As New Label
ol.Text = i.ToString
Dim oT As New AjaxControlToolkit.TabPanel
oT.Controls.Add(ol)
oT.HeaderText = i.ToString
tcMain.Tabs.Add(oT)
Next
For i As Integer = 1 To tcMain.Tabs.Count
If tcMain.Tabs(tcMain.Tabs.Count - i).HeaderText = "Tab0" Then tcMain.Tabs.RemoveAt(tcMain.Tabs.Count - i)
Next
End If
End Sub
End Class
Примечание: Если закомментировать Msgstr "Если Not Page.IsPostBack Then", то есть запустите код u При каждой загрузке страницы таблоконтейнер работает как ожидалось - я могу выбрать любую вкладку без проблем. В моем реальном проекте это решение не может быть решением - я буду добавлять/удалять вкладки на основе ввода пользователем, поэтому, если я не буду вести журнал всех изменений, внесенных в элемент управления, я не могу загружать эти изменения каждый раз, когда загружается страница.