Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Accessing control buried in another control
Message
De
24/09/2010 07:51:05
Timothy Bryan
Sharpline Consultants
Conroe, Texas, États-Unis
 
 
À
21/09/2010 17:54:22
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Versions des environnements
Environment:
ASP.NET
Application:
Web
Divers
Thread ID:
01482165
Message ID:
01482549
Vues:
42
>>>>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

Hi Robert,
I converted your code to C sharp and it works great plus solved the problem. I still have this in my page code but plan to move it somewhere more useful, possibly my base page class.
Thanks a bunch and also to Paul
Tim
>>>>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
>>>
>>
>>Hi Bruce,
>>
>>Thanks for the VB code, I should be able to translate that no problem. I am guessing you have this in a general use place and must pass in the page. It is a recursive call to itself which is something I have seen but never done. I will see what I can do to utilize this. Thanks!!
>>Tim
>
>
>Yes, you can pass in anything that inherits from Web.UI.Control (which Page does). Hope it helps.
Timothy Bryan
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform