Using system; using system.componentmodel.design; using system.web.ui; using system.web.ui.webControls;
namespace WebFrame {[DefaultEvent ( "Login"), DefaultProperty ( "Name")] public class CompositeLogin: WebControl, INamingContainer {private Button _button; private TextBox _nameTextBox; private Label _nameLabel; private TextBox _passwordTextBox; private Label _passwordLabel; private RequiredFieldValidator _nameValidator; Private RequiredFieldValidator_passwordvalidator;
Private static readonly object eventlogin = new object ();
#Region Rebates the controls attribute // gets the controlcollection object in the System.Web.ui.Control class, which represents the sub-control of the server controlled in the UI hierarchy public Override ControlCollection controls {get {// Determine whether the server control is included Control, if not included, create sub-control ENSURECHILDCONTROLS (); return base.controls;}} #ENDREGION
Public String ButtonText {Get {ENSURECHILDCONTROLS ();} set {ensurechildControls (); _Button.Text = value;}}
Public string name {get {en SurechildControls (); return_nametextbox.text;} set {ensurechildControls (); _nametextBox.text = value;}}
public string NameErrorMessage {get {EnsureChildControls (); return _nameValidator.ErrorMessage;} set {EnsureChildControls (); _nameValidator.ErrorMessage = value; _nameValidator.ToolTip = value;}}
Public String Namelabel {Get {ENSURECHILDCONTROLS ();} set {eNSureChildControls (); _namelabel.text = value;}}
Public string password {get {eNSureChildControls (); return _passwordTextBox.Text;}}
public string PassWordErrorMessage {get {EnsureChildControls (); return _passwordValidator.ErrorMessage;} set {EnsureChildControls (); _passwordValidator.ErrorMessage = value; _passwordValidator.ToolTip = value;}} public string PassWordLabel {get {EnsureChildControls (); return _passwordLabel.Text } Set {eNSureChildControls (); _passwordLabel.text = value;}}
Public Event EventHandler Login {add {events.addhandler (EventLogin, Value);}}}
Protected Virtual Void OnLogin (EventAndler LoginHandler = (EventHandler) Events [EventLogin]; if (loginhandler! = null) LoginHandler (this, e);}
protected override bool OnBubbleEvent (object source, EventArgs e) {bool handled = false; if (e is CommandEventArgs) {CommandEventArgs ce = (CommandEventArgs) e; if (ce.CommandName == "Login") {OnLogin (EventArgs.Empty) Handled = true;}} returnid;
#Region Dynamic Creating Sub-control
Protected Override Void CreateChildControls () {Controls.clear ();
_namelabel = new label ();
_NameTextBox = new textbox (); _nametextbox.id = "nametextbox";
_nameValidator = new RequiredFieldValidator (); _nameValidator.ID = "validator1"; _nameValidator.ControlToValidate = _nameTextBox.ID; _nameValidator.Text = "*"; _nameValidator.Display = ValidatorDisplay.Dynamic;
_passwordlabel = new label ();
_passwordtextbox = new textbox (); _passwordtextbox.id = "passwordTextbox";
_passwordValidator = new RequiredFieldValidator (); _passwordValidator.ID = "validator2"; _passwordValidator.ControlToValidate = _passwordTextBox.ID; _passwordValidator.Text = "*"; _passwordValidator.Display = ValidatorDisplay.Dynamic; _button = new Button (); _button.ID = "Button1"; _Button.commandName = "login";
this.Controls.Add (_nameLabel); this.Controls.Add (_nameTextBox); this.Controls.Add (_nameValidator); this.Controls.Add (_passwordLabel); this.Controls.Add (_passwordTextBox); this.Controls.Add (_PasswordValidator); this.Controls.add (_Button);
#ndregion
#REGION control output
Html style attributes protected override void Render (HtmlTextWriter writer) {// need to be rendered to the specified System.Web.UI.HtmlTextWriter in AddAttributesToRender (writer); writer.AddAttribute (HtmlTextWriterAttribute.Cellpadding, "1", false) ; writer.RenderBeginTag (HtmlTextWriterTag.Table); writer.RenderBeginTag (HtmlTextWriterTag.Tr); writer.RenderBeginTag (HtmlTextWriterTag.Td); _nameLabel.RenderControl (writer); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag.Td); _nameTextBox.RenderControl (writer); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag.Td); _nameValidator.RenderControl (writer); writer.RenderEndTag (); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag.Tr); writer.RenderBeginTag (HtmlTextWriterTag.Td); _passwordLabel.RenderControl (writer); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag.Td); _passwordTextBox.RenderControl (writer); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag. TD); _Passwordva lidator.RenderControl (writer); writer.RenderEndTag (); writer.RenderEndTag (); writer.RenderBeginTag (HtmlTextWriterTag.Tr); writer.AddAttribute (HtmlTextWriterAttribute.Colspan, "3"); writer.AddAttribute (HtmlTextWriterAttribute.Align, " Right "); Writer.Renderbegintag (HTMLTextWritrtag.td); _Button.RenderControl (Writer.renderendtag (); writer.renderendtag (); Writer.renderendtag ();} #ENDREGION
}
Posted on 2004-10-21 08:04 Cold wind .NET Read (122) Comments (4) Edit Collection
Comments # RE: Server Control Combine Controls (User Login) Complete at 2004-10-21 .aspx File <% @reg Tagprefix = "Loginon" namespace = "WebFrame" asmbly = "WebFrame"%>
"); Response.Write ( "PassWord:" CompositeLogin1.PassWord) } 2004-10-21 08:06 | Cold wind .NET # RE: Server control combination control (user login) Completed on 2004-10-21 It inherited from Interface InamingContainer is an essential inamingContainer to provide a child control. New naming range, guarantee ID uniqueness of child controls
2004-10-21 08:06 | Cold wind .NET # RE: Server control combined control (user login) is done in 2004-10-21. Yesterday, I wrote a combination control. I met a little bit of trouble. I haven't found it for a long time. I finally gave me one of this morning. It turns out that I have an EnSureChildControls () function every time. So a test is old error. . Encourage. .