Walter, Thank you for your answer. However, I don't have buttons, all I have
is another textbox which causevalidation set to false, but AutoPostBack set
to true in order to trigger TextChanged event.
Here is my code for Conposite Control EmailTextBox (Let's use Email instead
of PhoneNumber),
====================begin of EmailTextBox =====
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace EnterpriseLibrary.WebControls
{
[DefaultProperty("Value")]
[ToolboxData("<{0}:ncEmailTextBox runat=server></{0}:ncEmailTextBox>")]
public class ncEmailTextBox : CompositeControl
{
private TextBox txtEmail = new TextBox();
private RegularExpressionValidator VldtrEmail;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Value
{
get
{
return txtEmail.Text;
}
set
{
EnsureChildControls();
txtEmail.Text = value;
}
}
protected override void CreateChildControls()
{
txtEmail.ID = this.ID + "_Email";
txtEmail.Width = 140;
VldtrEmail = new RegularExpressionValidator();
VldtrEmail.ID = this.ID + "_VldtrEmail";
VldtrEmail.ControlToValidate = txtEmail.ID;
VldtrEmail.ValidationExpression =
@"^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$";
VldtrEmail.Text = "Invalid email format.";
VldtrEmail.Display = ValidatorDisplay.Static;
this.Controls.Add(txtEmail);
this.Controls.Add(VldtrEmail);
base.CreateChildControls();
}
public override void RenderControl(System.Web.UI.HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
txtEmail.RenderControl(writer);
VldtrEmail.RenderControl(writer);
writer.RenderEndTag(); // td
writer.RenderEndTag(); // tr
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();//td
writer.RenderEndTag();//tr
writer.RenderEndTag(); // table
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
}
}
============ end of EmailTextBox ==================
Code for the Page:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="play.aspx.cs"
Inherits="play" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr><td>Composite Control Email:</td><td><nc:ncEmailTextBox ID="Email"
runat="server" /></td></tr>
<tr><td>Some TextBox with AutoPostBack:</td><td><asp:TextBox ID="TextBox1"
runat="server" AutoPostBack="true"
OnTextChanged="TextBox1_TextChanged"></asp:TextBox></td></tr>
</table>
</form>
</body>
</html>