Я пытаюсь создать функцию, которая ищет отношения родитель-потомок WebControl (в основном противоположно WebControl.FindControl (id as String), но ищет определенный тип WebControl).
Пример:
У меня есть элемент управления в ItemTemplate для GridViewRow. Я пытаюсь ссылаться на 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
Я знаю, что "ByVal parentControlType as WebControl.Type" в определении функции не будет работать - это то, что я ищу.
Я уверен, что есть лучший способ сделать это, поэтому, пожалуйста, не стесняйтесь, чтобы я выглядел просто, указав на это!
Спасибо, ребята!