使用动态删除标签面板标签的容器在asp.net vb.net [英] dynamically deleting tab panel in tab container in asp.net using vb.net
问题描述
我创建的asp.net聊天应用。在此,我一个标签的容器创建标签面板动态为每个用户。当您选择我产生为他选项卡新用户有两个文本框和发送按钮发送消息。如果他不希望继续他的聊天,我需要移除或删除标签。有什么办法,我可以删除或用vb.net asp.net中删除那些标签?
I'm creating a chat application in asp.net. In this I'm creating tab panels in a tab container dynamically for each user. when you select a new user I'm generating a tab for him with two text boxes and send button to send messages. If he doesn't want to continue his chat I need to remove or delete that tab. Is there any way that i can remove or delete those tabs in asp.net using vb.net?
推荐答案
下面是一个完整的工作示例,它可以分解成这种行( RemoveTab
):
Here is a complete working sample, it could be broken down into this line(in RemoveTab
):
Me.TabContainer1.Tabs.Remove(tab)
但是,看看自己......
But have a look yourself ...
页-ASPX:
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="true">
</asp:ToolkitScriptManager>
<div>
<asp:UpdatePanel ID="UpdTabContainer" ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true">
<asp:TabPanel ID="TabUserList" runat="server" HeaderText="UserList">
<ContentTemplate>
<asp:UpdatePanel ID="UpdUserList" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ListBox ID="ListBox1" SelectionMode="Single" AutoPostBack="true" OnSelectedIndexChanged="UserChanged" runat="server">
<asp:ListItem Text="User 1" Value="1"></asp:ListItem>
<asp:ListItem Text="User 2" Value="2"></asp:ListItem>
<asp:ListItem Text="User 3" Value="3"></asp:ListItem>
</asp:ListBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TabContainer1" EventName="ActiveTabChanged" />
</Triggers>
</asp:UpdatePanel>
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
</ContentTemplate>
</asp:UpdatePanel>
</div>
codebehind:
Codebehind:
Public Class TabContainerSample
Inherits System.Web.UI.Page
Const idSuffix = "_"c
Property CreatedTabIDs As List(Of String)
Get
If Session("CreatedTabIDs") Is Nothing Then
Session("CreatedTabIDs") = New List(Of String)
End If
Return DirectCast(Session("CreatedTabIDs"), List(Of String))
End Get
Set(value As List(Of String))
Session("CreatedTabIDs") = value
End Set
End Property
Private Sub TabContainerSample_Init(sender As Object, e As System.EventArgs) Handles Me.Init
For Each userID In CreatedTabIDs
AddTab(userID)
Next
End Sub
Private Sub AddTab(tabID As String)
Dim ucChat = DirectCast(Page.LoadControl("ChatControl.ascx"), ChatControl)
ucChat.UserName = tabID
AddHandler ucChat.ChatSubmitted, AddressOf chatSubmitted
AddHandler ucChat.ChatClosed, AddressOf chatClosed
Dim newTabPanel = New AjaxControlToolkit.TabPanel
newTabPanel.ID = String.Format("Tab{0}{1}", idSuffix, tabID)
newTabPanel.HeaderText = String.Format("TabPanel {0}", tabID)
newTabPanel.Controls.Add(ucChat)
TabContainer1.Tabs.Add(newTabPanel)
End Sub
Private Sub RemoveTab(tabID As String)
Dim tab = (From t In Me.TabContainer1.Tabs.Cast(Of AjaxControlToolkit.TabPanel)()
Where t.ID.Contains(idSuffix)
Let id = t.ID.Substring(t.ID.LastIndexOf(idSuffix) + 1)
Where id = tabID
Select t).First
Me.TabContainer1.Tabs.Remove(tab)
Me.CreatedTabIDs.Remove(tabID)
Me.UpdTabContainer.Update()
End Sub
Protected Sub UserChanged(sender As Object, e As EventArgs)
Dim userName = DirectCast(sender, ListBox).SelectedValue
If Not CreatedTabIDs.Contains(userName) Then
AddTab(userName)
CreatedTabIDs.Add(userName)
Me.UpdTabContainer.Update()
End If
End Sub
Private Sub chatSubmitted(chat As ChatControl)
' do something '
End Sub
Private Sub chatClosed(chat As ChatControl)
RemoveTab(chat.UserName)
End Sub
End Class
在聊天,用户控件:
The Chat-UserControl:
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="ChatControl.ascx.vb" Inherits="WebApplication1.ChatControl" %>
<asp:UpdatePanel ID="UpdChatControl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
Username: <asp:Label ID="LblUserName" runat="server" Text="0"></asp:Label>
<br /><asp:TextBox ID="TxtChat" runat="server" TextMode="MultiLine" Rows="4"></asp:TextBox>
<br /><asp:Button ID="BtnSend" runat="server" Text="Send" />
<br /><asp:Button ID="BtnClose" runat="server" Text="Close" />
</ContentTemplate>
</asp:UpdatePanel>
codebehind:
Codebehind:
Public Class ChatControl
Inherits System.Web.UI.UserControl
Public Event ChatSubmitted(sender As ChatControl)
Public Event ChatClosed(sender As ChatControl)
Public Property UserName As String
Get
Return Me.LblUserName.Text
End Get
Set(value As String)
Me.LblUserName.Text = value
End Set
End Property
Public Property ChatText As String
Get
Return Me.TxtChat.Text
End Get
Set(value As String)
Me.TxtChat.Text = value
End Set
End Property
Private Sub BtnSend_Click(sender As Object, e As System.EventArgs) Handles BtnSend.Click
RaiseEvent ChatSubmitted(Me)
Me.UpdChatControl.Update()
End Sub
Private Sub BtnClose_Click(sender As Object, e As System.EventArgs) Handles BtnClose.Click
RaiseEvent ChatClosed(Me)
Me.UpdChatControl.Update()
End Sub
End Class
如果您还有其他问题,问。
If you have further question, ask.
这篇关于使用动态删除标签面板标签的容器在asp.net vb.net的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!