vb.net由id的一部分来查找

时间:2014-10-28 14:09:46

标签: asp.net vb.net webforms findcontrol

我需要在一个页面中找到一个控件,但我不知道完整的ID。我只知道身份证的一部分。

我要做的事情是这样的:

control = Page.FindControl(part1& part2)

其中 part1 是ID的已知部分, part2 是未知部分。

1 个答案:

答案 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用户,则不容易出错。