¥xÆW³Ì¤jµ{¦¡³]­pªÀ¸sºô¯¸
½u¤W¤H¼Æ
952
 
·|­ûÁ`¼Æ¡G246713
°Q½×¥DÃD¡G190131
Åwªï±z§K¶O¥[¤J·|­û
°Q½×°Ï¦Cªí >> ±MÄæ¤å³¹ >> ¼¶¼gWeb¦Û­q±±¨î¶µªº¤ß±o»P½d¨Ò
[]  
[§Ú­n¦^ÂÐ]
¦^À³¥DÃD ¥[¤J§ÚªºÃöª`¸ÜÃD ÀËÁ|¦¹½g°Q½× ±N´£°ÝªÌ¥[¤J­Ó¤H¶Â¦W³æ
¼¶¼gWeb¦Û­q±±¨î¶µªº¤ß±o»P½d¨Ò
»ù­È : 0 QP  ÂI¾\¼Æ:1975 ¦^À³¼Æ:0
¼Ó¥D

longer
°ª¯Å±M®a
8502 27
5180 1947
µo°e¯¸¤º«H

®½ÃØ VP µ¹ longer
¦pªG­n¦b¦Û­q±±¨î¶µ¤¤¦A²K¥[¤l±±¨î¶µ¡AÀ³¼g¦b­þùØ¡H¤S­nª`·N¤°»ò¡H
¤@¡Boverride void CreateChildControls()
(¤@)¤l±±¥ó¼g¦b³oùئ³¤°»ò¦n³B¡H
¥iª½±µ¥[¤JASP.NETªº±±¥ó(¤]´N¬O<ASP:XXX>)¡A©Ò¦³ASP.NETªº±±¥ó¤¤ªº¨Æ¥ó.NETFrameWork·|¦Û¤vÀ°§A¥[¤J¡A³Ì°ò¥»ªº´N¬OPostBack¡BValidate....ªº¨º¨ÇJavascript¡A³o­ÓÀuÂI´N°÷¤F¡C
¦pªG­n¶Ç¤l±±¥óªº­È¥X¥h¡A¥²¶·¦boverride void OnLoad(EventArgs e)¤¤¨ú±o¡C

(¤G)¤l±±¥ó¼g¦b³oùئ³¤°»òÃa³B¡H
«Ü©_©ÇCreateChildControl¨Æ¥ó¡A­º¦¸¶i¤J­¶­±®É¡A¬Oµo¥Í¦bPage_Load¤§«á¡A¦ý¬O·íPostBack¦^¨Ó®É¡A«o¬Oµo¥Í¦bPage_Load¤§«e¡C
©Ò¥H¥~³¡¤Þ¥Îªº­¶­±¡A¦pªG­n³z¹L¦Û­q±±¥ó¤½¶}ªºÄݩʡA§ïÅÜCreateChildControl¤¤¥[¤Jªº¤l±±¥ó(ÄݩʡBÅã¥Ü©ÎÁôÂÃ...)¡A´N¤£¯à¼g¦bPage_Load¡A§_«hPostBack¦^¨Ó¡A¥~³¡³]ªº·sÄݩʷ|µL®Ä¡C
©Ò¥H¦pªG¥~³¡¤Þ¥Î­¶­±­n§ïÅܦ¹³Bªº¤l±±¥ó¡A¼g¦bPage_Init¡A´N¤£©ÈPoatBack¦^¨Ó¤SÅܦ^¹w³]­È¡C·íµM¦pªG§A¨S¦³¤ÞµoPostBack¨Æ¥ó¡A¨º´N¥i¥H¼g¦bPage_LoadµL©Ò¿×¡C

¤G¡Boverride void RenderChildren or Render(HtmlTextWriter output)
(¤@)¤l±±¥ó¼g¦b³oùئ³¤°»ò¦n³B¡H
©Ò¦³¤½¶}ÄݩʡA¦b³Ì«á¤~¥Í®Ä¡A©Ò¥H¥~³¡¤Þ¥Î­¶­±­n§ïÅܦۭq±±¥ó¤¤ªºÄݩʡA¼g¦b­þùØÀ³¸Ó³£¯à³Q¦Û­q±±¥ó¦¬¨ì¡C

(¤G)¤l±±¥ó¼g¦b³oùئ³¤°»òÃa³B¡H
©Ò¦³¤l±±¥ó³£±o¤â°Ê¼gHTML Code¥sHtmlTextWriter¥h¿é¥X¡A«D±`³Â·Ð¡A¦Ó¥B©Ò¦³javascript¨Æ¥ó³£­n¦Û¤v¼g¡A¦A¥[¨ì¤l±±¥óªºHtml Code¤¤¡A­n¦³¤@ÂI¥\¤O¥B«D±`¶O®É¡C
­Y­n¶Ç­È¡A¦pªG¤º³¡¦³SendªºButton¡A¥i¥H¦Û¤v¼g¨Æ¥ó¸Ñ¨M(¦ý¦Û­q±±¨î¶µ¡A³q±`¥u¬O­¶­±ªº¤@³¡¤À¡A¦h¥b¤£­t³dSendºô­¶)
¦pªG¨S¦³SendªºButton¡A´N­n¹ê§@IPostBackDataHanler¡A¥~³¡­¶­±¤~¦¬±o¨ì¡A¦Ó³o­Ó¤¶­±¹ê¦b¬O¦³ÂI°Q¹½¡A¤U­±ªº¨Ò¤l¤¤·|»¡©ú¡C

¤l±±¥ó­n¼g¦b­þùØ¡H¦U¦³§Q±Í¡A¨Ì¥Î³~¦Û¦æ§PÂ_¤F¡C
¥H¤U¬O¡G±±¨î¶µ«Ø¥ß¦ì¸m»P¶Ç­Èªº½d¨Ò
½d¨Ò³sµ²¡G¦Û­qEmail±±¨î¶µ

¦Û­q±±¨î¶µµ{¦¡½X

using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using System.Drawing;

[assembly: TagPrefix("Longer.WebControls","LWC")]
namespace Longer.WebControls
{

[ToolboxBitmap(typeof(SimpleEmailControl), "SimpleEmailControl.bmp")]
[DefaultProperty("Type")]
[ToolboxData("<{0}:SimpleEmailControl runat=server></{0}:SimpleEmailControl>")]
public class SimpleEmailControl : WebControl, INamingContainer, IPostBackDataHandler
{
#region private properities
private string EmailReg = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
private string _Sender = string.Empty;
private string _ReCeiver = string.Empty;
private Color _EmailBackColor = Color.White;
private Color _SenderBackColor = Color.White;
private string _ValidationGroup = string.Empty;
private string _PostBackEmailValue = string.Empty;
private TextBox EMailTbx = new TextBox();
/// <summary>
/// ¨ú±o¦¬¥óªÌ¤Î±H¥óªÌ©m¦W
/// </summary>
private String SenderAndReCeiver
{
//(¹ê§@IPostBackDataHandler®É¨Ï¥Î)
get
{
string s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set { ViewState["Text"] = value; }
}
#endregion

public SimpleEmailControl()
{
}

#region Override Method

protected override void OnLoad(EventArgs e)
{
//(ª`·N)==>CreateChildControls¤¤ªºEMail¤å¦r¤è¶ô­È­n¦bOnLoad®É¨ú­È¡A
//§_«hPage²Ä¤@¦¸PostBack·|¨ú¤£¨ì­È
if (Page.IsPostBack)//PostBack®É¤~¨ú­È¡A§_«h¨Ï¥Î¥~³¡µ¹ªº¹w³]­È
this._PostBackEmailValue = this.EMailTbx.Text;
base.OnLoad(e);
}

protected override void CreateChildControls()
{
//(ª`·N)==>¦b¦¹³B¥[¤JEMail¡A¬°ªº¬O¨Ï¥ÎÅçÃÒ¶µ¡A
//¦ýEmailBackColorÄݩʡA´N¥²¶·¦bPage_Init¤¤³]©w¤~¦³®Ä
Literal txt = new Literal();
txt.Text = "¦¬¥óªÌ«H½c¡G";

EMailTbx.Width =300;
EMailTbx.ValidationGroup = this._ValidationGroup;
EMailTbx.Text = this._PostBackEmailValue;
EMailTbx.ID = "REMailTbx";// ¤£¥i¥ÎÅܼÆ;
EMailTbx.BackColor = this.EmailBackColor;

RequiredFieldValidator validA = new RequiredFieldValidator();
validA.ID = "EmailRequiredFieldValidator";
validA.ControlToValidate = EMailTbx.ID;
validA.ValidationGroup = this._ValidationGroup;
validA.ErrorMessage = "*";
validA.Display = ValidatorDisplay.Dynamic;

RegularExpressionValidator validB = new RegularExpressionValidator();
validB.ID = "EmailRegularValidator";
validB.ControlToValidate = EMailTbx.ID;
validB.ValidationGroup = this._ValidationGroup;
validB.ErrorMessage = "«H½c®æ¦¡¿ù»~";
validB.Display = ValidatorDisplay.Dynamic;
validB.ValidationExpression = this.EmailReg;

Controls.Add(txt);
Controls.Add(EMailTbx);
Controls.Add(validA);
Controls.Add(validB);

base.CreateChildControls();
}


protected override void Render(HtmlTextWriter output)
{
if (!(Site == null) && Site.DesignMode)
{
output.Write(string.Format("<font size='2' color='navy' face='arial'>[ \" EMailControl: {0}\" ]</font>
", this.ID));
output.Write("<font size='1' color='black' face='arial'> ¤£¤ä´©¦bVS.NET³]­p¤¶­±Åã¥Ü</font>
");
}
else
{
//»Ý¹ê§@IPostBackDataHandler¡APostBack¤~¯à§ì¨ì¤å¦r¤è¶ô­È
//(ª`·N)==>¹ê§@IPostBackDataHandler¡A­n¶Ç¥X­Èªº±±¥óID³£¥²»Ý¨Ï¥Îthis.UniqueID¡A¤~¯à§ì±o¨ì¡C
//¦h­Ó±±¥óID¤]³£¥Îthis.UniqueID¡A·|¥H,¸¹¤À¶}¦U±±¥ó­È
string patten="<INPUT type= 'text' name = '{0}' id='{0}' maxlength='30' value = '{1}'"
+" style=\"width:100px;background-color:"+System.Drawing.ColorTranslator.ToHtml(this._SenderBackColor)+";\" >";

output.Write(string.Format("±H¥óªÌ©m¦W¡G" + patten, this.UniqueID, this._Sender));
output.Write(string.Format(" ¦¬¥óªÌ©m¦W¡G" + patten, this.UniqueID, this._ReCeiver));
}
base.Render(output);
}

#endregion

#region IPostBackDataHandler ¦¨­û
public delegate void EmailSend(object sender,EMailArgs e);
public event EmailSend OnEmailSend;
/// <summary>
/// Render()¤¤¤§¤l±±¥ó¶Ç°e¥X¨Óªº­È¡A¥BpostCollection¥u»`¶°ID¬Othis.UniqueID±±¥óªº­È
/// (ª`·N)==>CreateChildContrl()¤¤ªº±±¥ó­È³oùا줣¨ì
/// </summary>
/// <param name="postDataKey"></param>
/// <param name="postCollection"></param>
/// <returns></returns>
bool IPostBackDataHandler.LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
String presentValue = SenderAndReCeiver;//¤§«eªº­È
//(ª`·N)==>postCollection¥u»`¶°ID¬Othis.UniqueID±±¥óªº­È
String postedValue = (string)postCollection[postDataKey];
if (postedValue != null)
{
if (!postedValue.Equals(presentValue))
{
SenderAndReCeiver = postedValue;
return true;
}
}
return false;
}


void IPostBackDataHandler.RaisePostDataChangedEvent()
{
EMailArgs arg = new EMailArgs();
arg.Reciver = this.ReCeiver;
arg.Sender = this.Sender;
arg.EMail = this._PostBackEmailValue;
doEmailSend(arg);
}
private void doEmailSend(EMailArgs e)
{
if (null != OnEmailSend)
OnEmailSend(this, e);
}
#endregion

#region Public Properties
/// <summary>
/// «H½c¤å¦r¤è¶ô­I´º¦â
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue(typeof(Color), "White")]
[Description("«H½c¤å¦r¤è¶ô­I´º¦â")]
[Localizable(true)]
public Color EmailBackColor
{
get { return _EmailBackColor; }
set { _EmailBackColor = value; }
}
/// <summary>
/// «H½c¤å¦r¤è¶ô­I´º¦â
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue(typeof(Color), "White")]
[Description("±H¥óªÌ¤å¦r¤è¶ô­I´º¦â")]
[Localizable(true)]
public Color SenderBackColor
{
get { return _SenderBackColor; }
set { _SenderBackColor = value; }
}

/// <summary>
/// ­¶­±ButtonÅçÃÒ¸s²Õ¦WºÙ(ValidationGroup)
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue("ValidationGroup")]
[Description("«ü©wValidationGroup¦WºÙ")]
[Localizable(true)]
public string ValidationGroup
{
get { return _ValidationGroup; }
set { _ValidationGroup = value; }
}
/// <summary>
/// ¨ú±o¦¬¥óªÌ«H½c
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue("")]
[Description("¨ú±o¦¬¥óªÌ«H½c")]
[Localizable(true)]
public string EMail
{
get { return this._PostBackEmailValue; }
set { this._PostBackEmailValue = value; }
}

/// <summary>
/// ¨ú±o±H¥óªÌ©m¦W
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue("")]
[Description("¨ú±o±H¥óªÌ©m¦W")]
[Localizable(true)]
public String Sender
{
get
{
this._Sender = (SenderAndReCeiver != string.Empty) ? SenderAndReCeiver.Split(',')[0] : string.Empty;
return this._Sender;
}
set { this._Sender = value; }
}
/// <summary>
/// ¨ú±o¦¬¥óªÌ©m¦W
/// </summary>
[Bindable(true)]
[Category("«H½cÄÝ©Ê")]
[DefaultValue("")]
[Description("¨ú±o±H¥óªÌ©m¦W")]
[Localizable(true)]
public String ReCeiver
{
get
{
this._ReCeiver = (SenderAndReCeiver != string.Empty) ? SenderAndReCeiver.Split(',')[1] : string.Empty;
return this._ReCeiver;
}
set { this._ReCeiver = value; }
}
#endregion

}

/// <summary>
/// ¨Æ¥óArgumentÃþ§O
/// </summary>
public class EMailArgs:EventArgs
{
public string EMail= string.Empty;
public string Sender = string.Empty;
public string Reciver = string.Empty;
public EMailArgs()
{
}
}
}


¤Þ¥Î­¶­±aspx

<%@ Register Assembly="SimpleEmailControl" Namespace="Longer.WebControls" TagPrefix="LWC" %>
<LWC:SimpleEmailControl ID="SimpleEmailControl1" runat="server" ValidationGroup="emailgroup" />
<br />
<asp:Button ID="Button1" runat="server" Text="°e¥X" ValidationGroup="emailgroup"
onclick="Button1_Click" />
<br />
<table>
<tr>
<td><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
<td><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></td>
</tr>
</table>

«áºÝµ{¦¡½Xaspx.cs

protected void Page_Init(object sender, EventArgs e)
{
//CreateChildControls¨Æ¥ó¤¤ªº¤l±±¨î¶µÄݩʤ@©w­n¦bPage_Init³]©w¡A§_«hPostBack«á¡A·|­«¦^¹w³]­È
SimpleEmailControl1.EmailBackColor = System.Drawing.ColorTranslator.FromHtml("#E7FAAB");
//³]©w»PButton1¬Û¦PªºÅçÃÒ¸s²Õ
SimpleEmailControl1.ValidationGroup = Button1.ValidationGroup;
//if (!IsPostBack)
SimpleEmailControl1.EMail = "aaa@bbb.ccc";
//¥ÑSimpleEmailControl¦Û¤v²£¥Íªº¨Æ¥ó¨ú­È(¥i°µ¥i¤£°µ)
SimpleEmailControl1.OnEmailSend+=new Longer.WebControls.SimpleEmailControl.EmailSend(SimpleEmailControl1_OnEmailSend);
}

protected void Page_Load(object sender, EventArgs e)
{
//Render¨Æ¥ó¤¤ªº¤l±±¨î¶µÄݩʭn¦b³oùس]©w§Y¥i
SimpleEmailControl1.SenderBackColor = System.Drawing.ColorTranslator.FromHtml("#E7FAAB");
if (!IsPostBack)
{
SimpleEmailControl1.Sender = "¤ý¤p©ú";
SimpleEmailControl1.ReCeiver = "§õ¤j¦P";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = string.Format("¥~³¡«ö¶s¨Æ¥ó±µ¦¬ªº­È¡G
±H¥óªÌ©m¦W¡G{0}
¦¬¥óªÌ©m¦W¡G{1}
¦¬¥óªÌEmail¡G{2}"
, SimpleEmailControl1.Sender
, SimpleEmailControl1.ReCeiver
, SimpleEmailControl1.EMail);
}
void SimpleEmailControl1_OnEmailSend(object sender, Longer.WebControls.EMailArgs e)
{
Label2.Text = string.Format("SimpleEmailControlªºEmailSend¨Æ¥ó¶Ç¥Xªº­È¡G
±H¥óªÌ©m¦W¡G{0}
¦¬¥óªÌ©m¦W¡G{1}
¦¬¥óªÌEmail¡G{2}", e.Sender, e.Reciver, e.EMail);
}


·j´M¬ÛÃöTagsªº¤å³¹¡G [ Web ] , [ Custom ] , [ Control ] , [ ¦Û­q±±¨î¶µ ] ,
¥»½g¤å³¹µoªí©ó2008-07-17 18:27
¥Ø«e©|µL¥ô¦ó¦^ÂÐ
   

¦^ÂÐ
¦p­n¦^À³,½Ð¥ýµn¤J.