尋找指定型別的父控制項

尋找指定型別的父控制項

一般我們可以使用 FindControl 去找到子控制項,但是若我們需要去找指定型別的父控制項要如何尋找呢?例如去尋找指定 TextBox 控制項所屬的 UpdatePanel 父控制項。針對上述的需求,以下將提供解決方式。

在 Control 有一個 Parent 屬性,表示該控制項的父控制項,所以我們可以利用遞迴方式逐層往上判斷 Parent 屬性是否為指定型別,符合的話傳回該父控制項。以下的 FindParent 函式就是在尋找指定型別的父控制項。

 

    ''' <summary>
    ''' 尋找指定型別的父控制項。
    ''' </summary>
    ''' <param name="Control">控制項。</param>
    ''' <param name="Type">欲尋找的型別。</param>
    Public Shared Function FindParent(ByVal Control As Control, ByVal Type As System.Type) As Control
        If Control.Parent Is Nothing Then
            Return Nothing
        Else
            If Type.IsInstanceOfType(Control.Parent) Then
                Return Control.Parent
            Else
                Return FindParent(Control.Parent, Type)
            End If
        End If
    End Function

如果要尋找 TextBox 所屬的 UpdatePanel 則可以撰寫如下程式碼即可。

        Dim oParent As Control
        oParent = FindParent(TextBox1, GetType(UpdatePanel))

ASP.NET 魔法學院