我有一个vb.net应用程序,其中一页显示TabContainer
:
<div class="centreMain">
<con1:TabContainer ID="addClient" CssClass="tab" runat="server">
<con1:TabPanel ID="tab1" runat="server" Enabled="true" HeaderText="Tab 1">
<ContentTemplate>
<div class="body">
...
</div>
</ContentTemplate>
</con1:TabPanel>
<con1:TabPanel ID="contacts" runat="server" Enabled="true", HeaderText="Contacts">
<ContentTemplate>
<div class="body">
<template1:AB ID="CM_1" runat="server" CssClass="tab_content" />
<template2:CD ID="ANCM_1" runat="server" CssClass="tab_container" />
</div>
</ContentTemplate>
</con1:TabPanel>
</con1:TabContainer>
</div>
AB
和CD
是两个不同的控制模块(在App / Controls中定义)。
尽管我当前同时在选项卡中同时显示两个控件,但我真正想做的是默认情况下显示CM_1
,然后在用户单击特定按钮时显示(在CM_1
控件上),重新绘制选项卡内容以显示ANCM_1
控件,而不是CM_1
控件。
在CM_1
控件中,有一个按钮:
<asp:Button ID="btnAddContact" CssClass="button" runat="server" Text="+ Add new contact" />
我想重绘<con1:TabPanel ID="contacts" ... ></con1:TabPanel>
的内容,以在单击{{}上的ANCM_1
按钮时在CM_1
控件的位置显示btnAddContact
控件1}}控制。
我该怎么做?
修改
在我的CM_1
文件(其中CM.ascx.vb
被定义为控件的控制模块)中,我添加了一个函数来处理对template1:AB
按钮的单击:
btnAddContact
当我单击Protected Sub btnAddContact_Click(sender As Object, e As System.EventArgs) Handles btnAddContact.Click
Dim ID As String = Request.QueryString("ID")
Dim tabControl As Control = Page.FindControl("addClient")
Dim contactsTab As Control = Page.FindControl("contacts")
Dim CM1 As Control = tabControl.FindControl("CM_1")
Dim ANCM1 As Control = tabControl.FindControl("ANCM_1")
CM1.Visible = False
ANCM1.Visible = True
End Sub
按钮时,我碰到了在此功能上设置的断点:在逐步执行该功能时,我可以看到
btnAddContact
变量已正确填充ID
被分配了tabControl
AjaxControlToolkit.TabContainer
变量的值为contactsTab
Nothing
变量的值为CM1
Nothing
变量的值为ANCM1
我在这里做错了什么?如何在此函数中正确获取Nothing
,contactsTab
和CM1
对象?