2

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

4

1 回答 1

0

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

您将不得不提醒选项卡控件(页面?)的父选项卡控件(ascx 控件)的子控件已请求选项卡控件前进到另一个选项卡。

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

  1. 在 ascx 控件中实现一个事件,当单击 ascx 控件中的按钮时引发该事件。这个 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. 在您的处理程序中,执行您需要执行的任何操作以更改到下一个选项卡。

于 2013-04-29T22:03:03.867 回答