Tips for writing ASP.NET composite controls

Here are some tips I picked up in a Microsoft newsgroup regarding the creation of composite ASP.NET web controls.

1) My composite controls are created based on a property of my control. When the postback of a page occurs due to a button click, my CreateChildControls() method is called before the button code is executed, so if that button code changes the property in question it is already too late to reflect this in the control. Is there a way to "Invalidate" my control when this property is set so that it's child controls are recreated?

A) Yes, set ChildControlsCreate to false.

 

2) Dropping my control onto a design surface displays only a blank control, none of the composite controls are visible at all.

A)
First add the following method in order to expose the functionality of a protected method in your component

public new void EnsureChildControls()
{
base.EnsureChildControls();
}

Next add the following attribute to your class

[Designer(MyControlDesigner)]

Finally, create a designer class like so

 

 

 

 

public class MyControlDesigner : ControlDesigner

{

public override String GetDesignTimeHtml()

{

( (MyControl) Control).EnsureChildControls();

return base.GetDesignTimeHtml();

}

}

 

Share this article!

Follow us!

Find more helpful articles: