ajaxLoginCtrl4StudyezCom

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace AjaxControl {     /// <summary>     ///AjaxLogin 的摘要说明     /// </summary>     public class AjaxLogin:CompositeControl     {        private AjaxLoginContainer _templateContainer;         private ITemplate _loginTemplate;         [PersistenceMode(PersistenceMode.InnerProperty ),TemplateContainer(typeof(AjaxLogin ))]         public ITemplate LayoutTemplate         {             get             {                 return this._loginTemplate;             }             set             {                 this._loginTemplate =value;                 base.ChildControlsCreated = false;             }         }         public AjaxLogin()         {             //             //TODO: 在此处添加构造函数逻辑             //         }         protected override HtmlTextWriterTag TagKey         {             get             {                 return HtmlTextWriterTag.Div;             }         }         protected override void OnLoad(EventArgs e)         {             base.OnLoad(e);             if (!Page.ClientScript.IsClientScriptBlockRegistered(Page.GetType(), "js4ajaxLoginControl"))             {                 Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "js4ajaxLoginControl", "<script language=/"javascript/" type=/"text/javascript/" src=/"ajaxLogin.js/" ></script>", false);             }         }         protected override void CreateChildControls()         {             this.Controls.Clear();             this._templateContainer = new AjaxLoginContainer(this);             ITemplate layoutTemplate = this.LayoutTemplate;             if (layoutTemplate == null)             {                 this._templateContainer.EnableViewState = false;                 this._templateContainer.EnableTheming = false;                 layoutTemplate = new AjaxLoginTemplate(this);             }             layoutTemplate.InstantiateIn(this._templateContainer);             this.Controls.Add(this._templateContainer);                  }         protected override void Render(HtmlTextWriter writer)         {             base.Render(writer);                      if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), this.UniqueID))             {                 Control uLv = this.FindControl("LoginView");                 Control uLs = this.FindControl("LoginStatus");                 Control uName = this.FindControl("UserName");                 Control uPwd = this.FindControl("Password");                 Control uLi = this.FindControl("LoginIn");                 Control uLo = this.FindControl("LoginOut");                 Control uCs = this.FindControl("CurrentUser");                 Control uRm = this.FindControl("RememberMe");                 string uRmId = "";                 if (uRm == null)                 {                     uRmId = "";                 }                 else                 {                     uRmId = uRm.ClientID;                 }                 AjaxLoginContainer ajc = this._templateContainer;                 System.Text.StringBuilder sb = new System.Text.StringBuilder();                 sb.AppendLine("<script language=/"javascript/" type=/"text/javascript/">");                 sb.AppendFormat("var jx_{0}=new ajaxLogin(/"{0}/",/"{1}/",/"{2}/",/"{3}/",/"{4}/",/"{5}/",/"{6}/",/"{7}/",/"{8}/");",                                      this.ClientID, uLv.ClientID, uName.ClientID, uPwd.ClientID, uLi.ClientID,                                      uLs.ClientID, uCs.ClientID, uLo.ClientID,uRmId);                 sb.AppendFormat("jx_{0}.isOnline(jx_{0}.onCheckUserCompleted,jx_{0}.onHttpStatusError);", this.ClientID);                 sb.AppendFormat("</script>");                 Page.ClientScript.RegisterStartupScript(this.GetType(), this.UniqueID, sb.ToString(), false);             }         }         private sealed class AjaxLoginTemplate : ITemplate         {             private AjaxLogin _owner;             public AjaxLoginTemplate(AjaxLogin owner)             {                 this._owner = owner;             }             #region ITemplate 成员             public void InstantiateIn(Control container)             {                           }             #endregion             private void CreateControls(AjaxLoginContainer loginContainer)             {                 TextBox tb = new TextBox();                 tb.ID = "UserName";                 tb.TextMode = TextBoxMode.SingleLine;                 loginContainer.UserName = tb;                 TextBox pwd = new TextBox();                 pwd.ID = "Password";                 pwd.TextMode = TextBoxMode.Password;                 loginContainer.Password = pwd;                 Button lgIn = new Button();                 lgIn.ID = "LoginIn";                 lgIn.Text = "登录";                 lgIn.UseSubmitBehavior = false;                 loginContainer.LoginInButton = lgIn;                 CheckBox cb = new CheckBox();                 cb.ID = "RememberMe";                 cb.Text = "RememberMe";                 loginContainer.RememberMe = cb;                 Label lgN = new Label();                 lgN.ID = "CurrentUser";                 lgN.Text = "";                 loginContainer.CurrentUser = lgN;                 Button lgOut = new Button();                 lgOut.ID = "LoginOut";                 lgOut.Text = "注销";                 lgOut.UseSubmitBehavior = false;                 loginContainer.LoginOutButton = lgOut;                 Panel lgView = new Panel();                 lgView.ID = "LoginView";                 loginContainer.LoginView = lgView;                 Panel lgStatus = new Panel();                 lgStatus.ID = "LoginStatus";                 loginContainer.LoginStatus = lgStatus;             }         }         internal sealed class AjaxLoginContainer : WebControl         {             public TextBox UserName;             public TextBox Password;             public CheckBox RememberMe;             public Button LoginInButton;             public Label CurrentUser;             public Button LoginOutButton;             public Panel LoginView;             public Panel LoginStatus;             private AjaxLogin _owner;             public AjaxLoginContainer(AjaxLogin owner)             {                 _owner = owner;             }             public override void RenderBeginTag(HtmlTextWriter writer)             {             }             public override void RenderEndTag(HtmlTextWriter writer)             {             }                     }     }    } -----------------------Usage--------------------  <jx:AjaxLogin ID="lgView" runat="server">         <LayoutTemplate>           <asp:Panel ID="LoginView" runat="server">             用户名:<asp:TextBox ID="UserName" runat="server"></asp:TextBox>密码:<asp:TextBox ID="Password" TextMode="Password" runat="server" ></asp:TextBox>              <asp:Button ID="LoginIn"  Text="LoginIn" runat="server"/>          </asp:Panel>          <asp:Panel ID="LoginStatus" runat="server">             <asp:Label ID="CurrentUser" runat="server" ></asp:Label><asp:Button ID="LoginOut" Text="LoginOut" runat="server" />         </asp:Panel>         </LayoutTemplate>        </jx:AjaxLogin>

posted on 2008-06-26 12:11  老代哥哥  阅读(148)  评论(0编辑  收藏  举报

导航