我有一个ascx控件作为选项卡方式加载到一个aspx文件中。我在第一个ascx控件中有一个按钮。如果单击该按钮,则必须移至下一个选项卡。如何转到下一个标签?
答案 0 :(得分:0)
我假设您或您的组织编写了3个ascx控件?
您必须提醒选项卡式控件(页面?)的父级,选项卡式控件的子级(ascx控件)已请求选项卡控件进入另一个选项卡。
我知道如何做到这一点的最简单,最少耦合的方式是使用自定义事件。步骤如下:
在ascx控件中实现一个事件,该事件在单击ascx控件中的按钮时引发。在this Q+A中有一个例子。
由于您使用的是Visual Basic,因此第四步的语法将有所不同。我将在下面的下一步中对此进行描述。
在页面中为该事件设置处理程序。 (这是我链接到的示例中的第4步。)
将处理程序与用户控件相关联的最简单方法是在标记中:
<uc:MyUserControl TabChangeRequested="MyUserControl_TabChangeRequested"
runat="server" id="userControl1" />
此示例假定MyUserControl_TabChangeRequested
是您网页的公共或受保护方法。
如果这不起作用,您可以通过编程方式进行关联。如何执行此操作取决于用户控件是对页面本身可见,还是选项卡控件的子项。如果用户控件是页面的子控件,则可以使用此代码(在Page_Load中):
AddHandler userControl1.TabChangeRequested, AddressOf MyUserControl_TabChangeRequested
这与C#的语法截然不同,这可能使示例混乱。
如果用户控件是制表符控件的子节点而不是在页面控件中声明,则需要首先从特定制表符的控件集合中获取对用户控件的引用:
Dim uc as MyUserControl = TabControl1.Tabs(0).FindControl("userControl1")
AddHandler uc.TabChangeRequested, AddressOf MyUserControl_TabChangeRequested
根据选项卡控件及其编写方式,您可能需要查看选项卡控件自己的子项而不是选项卡。上一个示例的第一行如下所示:
Dim uc as MyUserControl = TabControl1.FindControl("userControl1")
在您的处理程序中,执行您需要执行的操作以更改为下一个选项卡。