ASP.NET Rendered Custom Controls with C#Builder
- Getting Started with Rendered Custom Controls
- Rendering Output
- Managing State
- Adding Event Infrastructure
- Using Your Control
- Summary
C#Builder has wizards to help you get started building rendered custom controls. Rendered custom controls require you to implement more code and perform manual operations, which is different from other types of controls that rely on their constituent controls to perform these tasks. This article explains how to do control drawing and perform these extra operations so you can begin creating your own rendered custom controls.
NOTE
Here's the source code for this article.
Getting Started with Rendered Custom Controls
To get started with creating a new rendered custom control project, press Ctrl+N and open the Web Control Library wizard under the C# ASP Projects folder.
NOTE
If you aren't yet familiar with working in C#Builder, see my previous article "Building ASP.NET Applications with C#Builder for Microsoft .NET" for details. Many of the tasks required to work with rendered custom controls are the same as those for composite custom controls; for more information on composite custom controls, see my previous article "Events and Properties for Composite Custom Controls in C#Builder."
The control we're going to build is a rating control that visitors to a site can use to rate a given page. It will have a set of options numbered 1 to 5 that the user can select to rate the page. When setting up this project, name the project and main file RatingControl. Along the same lines, modify the code template that was generated by the wizard to reflect the purpose of the control, as shown in Listing 1:
Listing 1 Class Declaration for RatingControl
namespace Mayo.Web.Controls { /// <summary> /// Lets users rate web pages. /// </summary> [DefaultProperty("Text"), ToolboxData( "<{0}:RatingControl runat=server></{0}:RatingControl>")] public class RatingControl : System.Web.UI.WebControls.WebControl, IPostBackDataHandler, IPostBackEventHandler { // remaining code elided for clarity
The code in Listing 1 reflects the changes I made to place this control in the right namespace (Mayo.Web.Controls) and to name the control appropriately (RatingControl). I also modified the ToolboxData attribute so the RatingControl would appear properly on the web page when users drag it from the Tool Palette onto the design surface.
RatingControl also implements IPostBackDataHandler and IPostBackEventHandler. Both of these interfaces are explained and their members are implemented in subsequent sections of this article.