如何使用Ajax Control Toolkit TabContainer在选项卡之间切换?

时间:2013-04-29 21:38:37

标签: asp.net vb.net

我有一个ascx控件作为选项卡方式加载到一个aspx文件中。我在第一个ascx控件中有一个按钮。如果单击该按钮,则必须移至下一个选项卡。如何转到下一个标签?

1 个答案:

答案 0 :(得分:0)

我假设您或您的组织编写了3个ascx控件?

您必须提醒选项卡式控件(页面?)的父级,选项卡式控件的子级(ascx控件)已请求选项卡控件进入另一个选项卡。

我知道如何做到这一点的最简单,最少耦合的方式是使用自定义事件。步骤如下:

  1. 在ascx控件中实现一个事件,该事件在单击ascx控件中的按钮时引发。在this Q+A中有一个例子。

    由于您使用的是Visual Basic,因此第四步的语法将有所不同。我将在下面的下一步中对此进行描述。

  2. 在页面中为该事件设置处理程序。 (这是我链接到的示例中的第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")
    
  3. 在您的处理程序中,执行您需要执行的操作以更改为下一个选项卡。