如何从aspx页面访问用户控制文件中的控件

时间:2015-03-03 09:51:26

标签: asp.net vb.net

我有一个用户控件,它有一个网格控件。我在aspx页面中使用了两次用户控件。现在我的问题是,它会创建两个具有不同ID的网格控件吗?如果是,我如何访问这两个网格控件?

1 个答案:

答案 0 :(得分:0)

如您所料,如果将UserControl放在页面上两次,它将创建两个具有单独ID的实例。它基本上与在页面上放置两个TextBox相同,因为它们也共享同一个类(TextBox),但是创建为具有单独ID的单独实例(例如TextBox1,TextBox2)。

您可以访问CodeBehind文件中UserControl提供的属性或方法,因为您可以访问其他控件类型的属性或方法。如果要访问网格,则必须在UserControl上引入一个属性,以便从父页面访问网格:

Public ReadOnly Property Grid As GridView 
    Get
        Return grid
    End Get
End Property

在父页面中,您可以添加与此类似的代码(为了示例,我从父页面隐藏网格):

userCtrl1.Grid.Visible = False
userCtrl2.Grid.Visible = False

但是,就封装而言,如果页面不知道哪个控件放在UserControl上会更清晰。这允许您在不中断页面的情况下更改UserControl。为此,您不必发布网格,而是将所需的属性和方法添加到父页面用于与UserControl交互的UserControl中。网格只能由内部的属性和方法访问:

用户控制:

Public Property ShowDetailData As Boolean
    Get
        Return grid.Visible
    End Get
    Set
        grid.Visible = value
    End Set
End Property

页:

userCtrl1.Grid.ShowDetailData = False
userCtrl2.Grid.ShowDetailData = False

在此示例中,如果您确定Repeater更适合显示数据,则可以在不中断页面的情况下更改此内容。