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