Click here to Skip to main content
15,881,882 members
Articles / Web Development / ASP.NET

Does Not Allow Child Controls Error

Rate me:
Please Sign up or sign in to vote.
3.31/5 (13 votes)
16 Aug 2007CPOL1 min read 41.4K   207   16   9
When you create a custom drop-down-list that inherits from System.Web.UI.WebControls.DropDownList and when you try to add controls (e.g., Me.Controls.Add(myControl)), you will get a "does not allow child controls error". Here is the fix.

Screenshot - does-not-allow-child-controls.gif

Introduction

I was trying to create a custom control that inherits from DropDownList with required field validation. My original intention was to embed RequiredFieldValidator on my custom drop-down-list control so that when I add a drop-down-list on my ASPX page, I don't have to re-code the RequiredFieldValidator all the time.

When I tried to add the required field validator as a child-control of the drop-down-list, I got the "does not allow child controls" error message as shown. Seems that the out-of-the-box drop-down-list does not allow child controls to be added.

Using the Code

I always have this principal when I do programming: "The biggest error on your application is normally caused by the-easiest-to-fix section". I spent hours yesterday to get this working, and guess what....the fix is very-very simple! Here it is. The code is in VB.NET.

What you have to do is override the CreateControlCollection method of the base class and create a new instance of it and pass the current class (Me for VB.NET, or this for C#).

VB
''' <summary>
''' Override the CreateControlCollection to overcome the "does not allow child controls".
''' </summary>
''' <returns></returns>
''' <remarks></remarks>

Protected Overrides Function CreateControlCollection() As System.Web.UI.ControlCollection
    Return New ControlCollection(Me)
End Function

That's it! You can then do the following:

VB
MyBase.Controls.Add(ctrValidator)

Points of Interest

Quiet easy, huh!? If you have the same problem when inheriting from out-of-the-box controls, this will be the fix.

Hope this helps.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Australia Australia
My name is Tommy Segoro currently working with Vivid Group in Perth, Western Australia. I also run my own hosting, web site design and development freelancing company. If you want to contact me please visit my website http://www.smallbusinesshosting.com.au.

I've been involved a lot with the customisation of Microsoft technologies such as Windows Sharepoint Services 2.0-3.0, Sharepoint Portal 2003, Microsoft Office Sharepoint Server 2007 (MOSS), Microsoft CRM and Microsoft Content Management Server (MCMS).

I currently hold Microsoft Certified Professional (MCP) and MS CRM Software Advisor certification and have been programming for almost 4 years now.

Comments and Discussions

 
QuestionTrying to get this to work.. Pin
Himanshu Jain2-May-15 3:56
Himanshu Jain2-May-15 3:56 
GeneralThanks ! Pin
lagartron123mailcl25-Jun-14 7:46
lagartron123mailcl25-Jun-14 7:46 
QuestionThank you! Pin
Josh Mondragon27-Jan-12 5:23
Josh Mondragon27-Jan-12 5:23 
GeneralMy vote of 5 Pin
Member 740954110-Nov-10 0:57
Member 740954110-Nov-10 0:57 
GeneralMost likely that's not the error Pin
Ricardo Casquete26-Jul-09 18:25
Ricardo Casquete26-Jul-09 18:25 
Generalthanks Pin
john mimiaga3-Oct-08 20:33
john mimiaga3-Oct-08 20:33 
GeneralThanks Pin
Khaled Musaied5-Apr-08 20:53
Khaled Musaied5-Apr-08 20:53 
GeneralGreat tip - thank you so much Pin
Mark Rödicker7-Dec-07 1:07
Mark Rödicker7-Dec-07 1:07 
GeneralOkay but... Pin
Chris_Green21-Aug-07 5:17
Chris_Green21-Aug-07 5:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.