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#).
Protected Overrides Function CreateControlCollection() As System.Web.UI.ControlCollection
Return New ControlCollection(Me)
That's it! You can then do the following:
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.