WebControlの親子関係を検索する関数を作成しようとしています(基本的にはWebControl.FindControl(id as String)の反対ですが、特定のWebControlタイプを検索します)。
例:GridViewRowのItemTemplateにユーザーコントロールがあります。ユーザーコントロールからGridViewRowを参照しようとしています。ユーザーコントロールは、divまたは他のタイプのコントロール内にある場合とない場合があるため、見ている親の数が正確にはわかりません(つまり、userControl.Parent.Parentを使用することはできません)。親子階層を上る途中で最初に見つかったGridViewRowを見つける関数が必要です。
したがって、この機能の必要性。これを行うためのより良い方法がない限り?とにかく、私が作成している関数をかなり汎用的にしたいので、探しているものに応じてさまざまなWebControlタイプ(つまり、GridViewRow、Panelなど)を指定できます。これが私が書いたコードです:
Public Function FindParentControlByType(ByRef childControl As WebControl, ByVal parentControlType As WebControl.Type, Optional ByRef levelsUp As Integer = Nothing) As WebControl
Dim parentControl As WebControl = childControl
Dim levelCount = 1
Do While Not parentControl.GetType = parentControlType
If Not levelsUp = Nothing AndAlso levelCount = levelsUp Then
parentControl = Nothing
Exit Do
End If
levelCount += 1
parentControl = parentControl.Parent
Loop
parentControl.FindControl(
Return parentControl
End Function
関数定義の「ByValparentControlTypeasWebControl.Type」が機能しないことはわかっています。それが私が探しているものです。
これを行うにはもっと良い方法があると確信しているので、それを指摘して私をシンプルに見せてください!
みんなありがとう!