EmailAutoComplete邮箱地址输入控件

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.ComponentModel;
using System.Web.UI.HtmlControls;
using System.Web;
using System.Web.UI.WebControls;
using System.Collections;

[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.ui.autobox.css""text/css", PerformSubstitution=true)]
[assembly: WebResource(
"Framework.Library.Web.WebControl.close.gif""image/gif")]
[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.min.js""application/x-javascript")]
[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.contextmenu.r2.js""application/x-javascript")]
[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.templating.js""application/x-javascript")]
[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.ui.autobox.js""application/x-javascript")]
[assembly: WebResource(
"Framework.Library.Web.WebControl.jquery.ui.autobox.ext.js""application/x-javascript")]
namespace Framework.Library.Web.WebControl
{
    
public class EmailAutoComplete : Control
    {
        [Category(
"Behavior")]
        [Description(
"璇锋眰鑾峰彇鏁版嵁鐨刄rl銆?)]
        [DefaultValue("")]
        
public string AjaxUrl
        {
            
get
            {
                
object o = ViewState["AjaxUrl"];
                
if (o == null)
                    
return "";
                
return o.ToString();
            }
            
set { ViewState["AjaxUrl"= value; }
        }

        
//[Category("Behavior")]
        
//[Description("瑕佸啓鍏ユ帶浠跺璞$殑ClientID銆?)]
        
//[DefaultValue("")]
        
//public string TagObjectId
        
//{
        
//    get
        
//    {
        
//        object o = ViewState["TagObjectId"];
        
//        if (o == null)
        
//            return this.ID + "_TagObjectId";
        
//        return o.ToString();
        
//    }
        
//    set { ViewState["TagObjectId"] = value; }
        
//}

        [Category(
"Behavior")]
        [Description(
"楠岃瘉鍖归厤鍓嶇JS鏂规硶銆?)]
        [DefaultValue("function(typed) { return this.text.match(new RegExp(typed, 'i')); }")]
        
public string Match
        {
            
get
            {
                
object o = ViewState["Match"];
                
if (o == null)
                    
return "function(typed) { return this.text.match(new RegExp(typed, 'i')); }";
                
return o.ToString();
            }
            
set { ViewState["Match"= value; }
        }

        [Category(
"Behavior")]
        [Description(
"鍐欏叆鑾峰彇鏁版嵁鐨勫墠绔鐞咼S鏂规硶銆?)]
        [DefaultValue("function(obj) { return obj.text }")]
        
public string InsertText
        {
            
get
            {
                
object o = ViewState["InsertText"];
                
if (o == null)
                    
return "function(obj) { return obj.text }";
                
return o.ToString();
            }
            
set { ViewState["InsertText"= value; }
        }

        [Category(
"Behavior")]
        [Description(
"鍒楄〃椤规ā鍧椼€?)]
        [DefaultValue("<li><#= text #></li>")]
        
public string TemplateText
        {
            
get
            {
                
object o = ViewState["TemplateText"];
                
if (o == null)
                    
return "<li><#= text #></li>";
                
return o.ToString();
            }
            
set { ViewState["TemplateText"= value; }
        }

        [Category(
"Behavior")]
        [Description(
"闄勫姞鍙戦€佸弬鏁般€?)]
        [DefaultValue("")]
        
public string PostParams
        {
            
get
            {
                
object o = ViewState["PostParams"];
                
if (o == null)
                    
return "";
                
return o.ToString();
            }
            
set { ViewState["PostParams"= value; }
        }
        [Category(
"Behavior")]
        [Description(
"鏌ヨ鍏抽敭璇嶅弬鏁般€?)]
        [DefaultValue("searchKey")]
        
public string KeyParams
        {
            
get
            {
                
object o = ViewState["KeyParams"];
                
if (o == null)
                    
return "searchKey";
                
return o.ToString();
            }
            
set { ViewState["KeyParams"= value; }
        }
        [Category(
"Behavior")]
        [Description(
"鍒濆鍙傛暟銆?)]
        [DefaultValue("")]
        
public string Text
        {
            
get
            {
                
object o = ViewState["Text"];
                
if (o == null)
                    
return "";
                
return o.ToString();
            }
            
set { ViewState["Text"= value; }
        }

        [Category(
"Behavior")]
        [Description(
"璁剧疆鎴栬鍙?鍙銆?)]
        [DefaultValue(false)]
        
public bool ReadOnly
        {
            
get 
            {
                
object o = ViewState["ReadOnly"];
                
if (o == null)
                    
return false;
                
return  Convert.ToBoolean(o);
            }
            
set
            {
                ViewState[
"ReadOnly"= value;
            }
        }
        
        
public string[] EmailAddress
        {
            
get
            {
                
try
                {
                    
string tmps = Page.Request[this.ClientID];
                    System.Text.RegularExpressions.Regex reg 
= new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
                    ArrayList results 
= new ArrayList();
                    
if (!string.IsNullOrEmpty(tmps))
                    {
                        
foreach (string i in tmps.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
                        {
                            
if (reg.IsMatch(i))
                                results.Add(i);
                        }
                    }
                    
else
                    {
                        
return new string[0];
                    }
                    
return Array.ConvertAll<objectstring>(results.ToArray(), delegate(object i) { return i.ToString(); });
                }
                
catch
                {
                    
return new string[0];
                }
            }
        }

        
public string[] EmailNames
        {
            
get
            {
                
try
                {
                    
string tmps = Page.Request[this.ClientID];
                    System.Text.RegularExpressions.Regex reg 
= new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
                    ArrayList results 
= new ArrayList();

                    
if (!string.IsNullOrEmpty(tmps))
                    {
                        
foreach (string i in tmps.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
                        {
                            
if (!reg.IsMatch(i))
                                results.Add(i);
                        }
                    }
                    
else
                    {
                        
return new string[0];
                    }
                    
return Array.ConvertAll<objectstring>(results.ToArray(), delegate(object i) { return i.ToString(); });
                }
                
catch
                {
                    
return new string[0];
                }
            }
        }

        
protected override void OnInit(EventArgs e)
        {
            
base.OnInit(e);

            HtmlLink cssLink 
= new HtmlLink();
            cssLink.Href 
= Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.ui.autobox.css");
            cssLink.Attributes.Add(
"rel""stylesheet");
            cssLink.Attributes.Add(
"type""text/css");
            Page.Header.Controls.Add(cssLink);

            HtmlGenericControl Include1 
= new HtmlGenericControl("script");
            Include1.Attributes.Add(
"type""text/javascript");
            Include1.Attributes.Add(
"src", Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.min.js"));
            Page.Header.Controls.Add(Include1);

            HtmlGenericControl Include5 
= new HtmlGenericControl("script");
            Include5.Attributes.Add(
"type""text/javascript");
            Include5.Attributes.Add(
"src", Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.contextmenu.r2.js"));
            Page.Header.Controls.Add(Include5);

            HtmlGenericControl Include4 
= new HtmlGenericControl("script");
            Include4.Attributes.Add(
"type""text/javascript");
            Include4.Attributes.Add(
"src", Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.templating.js"));
            Page.Header.Controls.Add(Include4);

            HtmlGenericControl Include2 
= new HtmlGenericControl("script");
            Include2.Attributes.Add(
"type""text/javascript");
            Include2.Attributes.Add(
"src", Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.ui.autobox.js"));
            Page.Header.Controls.Add(Include2);

            HtmlGenericControl Include3 
= new HtmlGenericControl("script");
            Include3.Attributes.Add(
"type""text/javascript");
            Include3.Attributes.Add(
"src", Page.ClientScript.GetWebResourceUrl(this.GetType(), "Framework.Library.Web.WebControl.jquery.ui.autobox.ext.js"));
            Page.Header.Controls.Add(Include3);
        }


        
protected override void OnLoad(EventArgs e)
        {
            
base.OnLoad(e);

            System.Text.StringBuilder sb 
= new StringBuilder();
            
foreach(string mt in this.Text.Split(";".ToCharArray(),  StringSplitOptions.RemoveEmptyEntries))
            {
                sb.AppendFormat(
"{0}autobox[0].addBox('{1}');"this.ClientID, mt);
            }

            
string initScript = @" $(function() {{var {0}autobox = $('input.{0}').autobox({{
        ajax: '{1}',
        //valueObj: '{2}',
        match: {3},
        insertText: {4},
        templateText: '{5}',
        postParams:'{6}',
        keyName:'{7}',
        readyOnly: {8}
      }});if ($('#{2}')) $('#{2}').val(''); {9} }});
";
            initScript 
= string.Format(initScript, this.ClientID,
                
this.AjaxUrl,
                
"",//this.TagObjectId,
                this.Match,
                
this.InsertText,
                
this.TemplateText,
                
this.PostParams,
                
this.KeyParams,
                (
this.ReadOnly?"true":"false"),
                sb.ToString()
                );

            Page.ClientScript.RegisterStartupScript(
this.GetType(), this.ClientID, initScript, true);

            Page.ClientScript.RegisterStartupScript(
this.GetType(), "_contentMenu_""<div class='contextMenu' id='emailautocomplete_contentMenu'><ul><li id='open'>灞曞紑</li></ul></div>"false);
            

            
//Page.RegisterHiddenField(this.TagObjectId, "");
        }

        
protected override void Render(HtmlTextWriter writer)
        {
            
base.Render(writer);

            
string html =@"<input type='hidden' name='{0}' id='{0}' class='{0}' />";
            html 
= string.Format(html, this.ClientID);
            writer.Write(html);
        }


    }
}

下载:

 https://files.cnblogs.com/sjett/EmailAutocomplete.rar

原文地址:https://www.cnblogs.com/sjett/p/2111297.html