我需要在一个页面中找到一个控件,但我不知道完整的ID。我只知道身份证的一部分。
我要做的事情是这样的:
control = Page.FindControl(part1& part2)
其中 part1 是ID的已知部分, part2 是未知部分。
答案 0 :(得分:0)
对于它的价值,您可以使用此扩展方法搜索所有子控件:
Module ControlExtensions
<Runtime.CompilerServices.Extension()>
Public Function FindControlPart(root As Control, IdStart As String) As Control
Dim controls As New Stack(Of Control)(root.Controls.Cast(Of Control)())
While controls.Count > 0
Dim currentControl As Control = controls.Pop()
If currentControl.ID.StartsWith(IdStart, StringComparison.InvariantCultureIgnoreCase) Then
Return currentControl
End If
For Each child As Control In currentControl.Controls
controls.Push(child)
Next
End While
Return Nothing
End Function
End Module
用法:
Dim control As Control = Page.FindControlPart(part1)
它返回以给定ID-Part开头的第一个控件。所以你可能错了。如果您使用正确的NamingContainer
而不是Page
作为root用户,则不容易出错。