File: AdvancedCheckBox.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControls
{
public class AdvancedCheckBox : WebControl
{
private string _Text;
private string _PostBackUrl;
public string Text
{
get { return _Text; }
set { _Text = value; }
}
public string PostBackUrl
{
get { return _PostBackUrl; }
set { _PostBackUrl = value; }
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
PostBackOptions options = new PostBackOptions(this);
options.ActionUrl = _PostBackUrl;
string eRef = Page.ClientScript.GetPostBackEventReference(options);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, eRef);
writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox");
base.AddAttributesToRender(writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
if (!String.IsNullOrEmpty(_Text))
{
writer.AddAttribute(HtmlTextWriterAttribute.For, this.ClientID);
writer.RenderBeginTag(HtmlTextWriterTag.Label);
writer.Write(_Text);
writer.RenderEndTag();
}
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Input;
}
}
}
}
File: Default.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="custom" Namespace="myControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public string ProductName
{
get { return txtProductName.Text; }
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show AdvancedCheckBox</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label
id="lblProductName"
Text="Product Name:"
AssociatedControlID="txtProductName"
Runat="server" />
<asp:TextBox
id="txtProductName"
Runat="server" />
<br /><br />
<custom:AdvancedCheckBox
id="AdvancedCheckBox1"
Text="Advanced Options"
PostBackUrl="AdvancedOptions.aspx"
Runat="server" />
</div>
</form>
</body>
</html>