Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Accessing control buried in another control
Message
De
21/09/2010 12:11:57
 
 
À
21/09/2010 10:53:29
Timothy Bryan
Sharpline Consultants
Conroe, Texas, États-Unis
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Versions des environnements
Environment:
ASP.NET
Application:
Web
Divers
Thread ID:
01482165
Message ID:
01482194
Vues:
43
>Hi all,
>
>I have used place holder controls fairly often for adding user controls dynamically at runtime. Typically, I can access a placeholder directly and just add a control like this.
>
>ctrlSpecialSpecs specialSpecControl = (ctrlSpecialSpecs)Page.LoadControl("~/ORCSelection/UserControls/ctrlSpecialSpecs.ascx");
>           
>// Add the Control to the Placeholder
>this.holdSpecialSpecs.Controls.Add(specialSpecControl);
>
>
>Currently I have a place holder that is inside another complex control and accessing it this way just doesn't work as the control is not visible. I tried to do a find control like this, but get a null reference exception on the control.
>
>mmPlaceHolder defendantHolder = (mmPlaceHolder)this.Page.FindControl("holdDefendant");
>defendantHolder.Controls.Add(defendantDisplay);
>
>
>It is defined on the page like this; very straight forward.
>
> <mm:mmPlaceHolder ID="holdDefendant" runat="server" >
> </mm:mmPlaceHolder>
>
>
>Anybody have any ideas on how to get access to this control?
>Thanks
>Tim

Based on a suggestion of Paul, here is what I use (sorry, we're a VB shop)
 '*****************************************************************************
    'Description:
    '   Recursively searches for a control with Id property = controlID
    '   
    'Input Parameters: 
    '   Control to search
    '   controlID to search for
    ' 
    'Returned:  
    '   Control or Nothing
    '
    'Change Log:
    '2009.12.24 hewbxk  Defect 2955   Created  
    '
    '*****************************************************************************
    Public Function FindMyControl(Of T As Web.UI.Control)(ByVal controlToSearch As T, _
        ByVal controlID As String) As Control

        Dim matchingControl As Control = Nothing

        Try
            For Each subControl As Control In controlToSearch.Controls
                If ((Not subControl.ID Is Nothing) AndAlso (subControl.ID.EndsWith(controlID))) Then
                    matchingControl = subControl
                    Exit For

                Else
                    If (Not matchingControl Is Nothing) Then    'found it
                        Exit For

                    ElseIf subControl.HasControls() Then
                        matchingControl = Me.FindMyControl(subControl, controlID)

                    End If

                End If

            Next

        Catch objEx As Exception
            Throw

        Finally
            FindMyControl = matchingControl

        End Try

    End Function
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform