我也不清楚,是不是要公开TEXT属性
帮你up

解决方案 »

  1.   

    text属性已经公开了的阿。public override string text/  ,那么平时你们自己写的控件
    是怎么验证的阿?
      

  2.   

    要对输入控件进行验证,必须将 System.Web.UI.ValidationPropertyAttribute 应用于该控件
      

  3.   

    在程序头using那个控件的命名空间,还有那个控件所用到的空间
    就是和楼上的差不多
      

  4.   

    System.Web.UI.ValidationPropertyAttribute
      

  5.   

    我不知道你的服务器控件是使用HtmlTextWriter还是CreateControl写出来的。
    如果是HtmlTextWriter写的,客户端验证你还是自己写js代码验证吧,没办法使用asp.net自带的验证控件。
      

  6.   

    下面是我把人家的一个控件修改过后的源代码(增加了数据绑顶和css绑顶).using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.ComponentModel;
    using System.IO;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace Commbox
    {
    /// <summary>
    /// WebCustomControl1 的摘要说明。
    /// </summary>
    [
    DefaultEvent("TextChanged"),
    DefaultProperty("Text"),
    ]
    //public class ComboBox:WebControl, INamingContainer,IPostBackDataHandler
    public class ComboBox:TextBox
    {

    ListBox lb;  
    //public ComboBox():base(HtmlTextWriterTag.Input)
    public ComboBox()
    {
    lb=new ListBox();
    lb.Style["position"]="absolute";
    lb.Style["display"]="none";
    lb.Style["filter"]="progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')";
    lb.EnableViewState=true;
    Controls.Add(lb);
    }

    [
    PersistenceMode(PersistenceMode.InnerProperty),
    DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
    ]
    public  ListItemCollection Items
    {
    get
    {
    return  lb.Items;
    }

    } [
    DefaultValue(null),
    ]
    public  object DataSource
    {
    get
    {
     return  lb.DataSource;
    }
    set
    {
                   if(value!=null)
                   lb.DataSource=value;
    }     }
    [
    DefaultValue(""),
    ]
    public  string  DataMember
    {
    get
    {
    return  lb.DataMember;

    }
    set
    {
    lb.DataMember=value;
    } } [
    DefaultValue(""),
    ] public  string  DataTextField
    {
    get
    {  
    return lb.DataTextField;
    }
    set
    {
    lb.DataTextField=value;

    }
    }
    [
    DefaultValue(""),
    ]
    public  string  DataValueField
    {
    get
    {  
    return lb.DataValueField;
    }
    set
    {
    lb.DataValueField=value;

    }
    } [
    DefaultValue(""),
    ]
    public  string  DataTextFormatString
    {
    get
    {  
    return lb.DataTextFormatString;

    }
    set
    {
    lb.DataTextFormatString=value;
    } } protected new void OnDataBinding(EventArgs e)
    {
      lb.DataBind();
              
    }
    [
    DefaultValue(false),
    ]
    public new bool AutoPostBack
    {
    get
    {
    return ViewState["AutoPostBack"]==null?false:true;
    }
    set
    {
    if(value)
    ViewState["AutoPostBack"]=0;
    else
    ViewState.Remove("AutoPostBack");
    }
    }
    [
    DefaultValue(""),
    ]
    public override string Text
    {
    get
    {
    return Convert.ToString(ViewState["Text"]);
    }
    set
    {
    ViewState["Text"]=value;
    }
    }
    [
    DefaultValue(""),
    ]
    public  string  ComBoxCssClass
    {
    get
    {
    return lb.CssClass;
    }
    set
    {

    lb.CssClass=value;

    }
    } [
    DefaultValue(0),
    ]
    public override int MaxLength
    {
    get
    {
    object o=ViewState["MaxLength"];
    return o==null?0:(int)o;
    }
    set
    {
    ViewState["MaxLength"]=value;
    }
    } static private string _scriptBlock;
    static protected string ScriptBlock
    {
    get
    {
    if(_scriptBlock==null)
    {
    using(Stream s=typeof(ComboBox).Assembly.GetManifestResourceStream(typeof(ComboBox).FullName+".js"))
    {
    using(StreamReader sr=new StreamReader(s))
    {
    _scriptBlock="<script language=jscript>"+sr.ReadToEnd()+"</script>";
    }
    }
    }
    return _scriptBlock;
    }
    }
    protected override void OnPreRender(System.EventArgs e)
    {
    base.OnPreRender(e); Page.RegisterStartupScript(this.UniqueID,"<script>LostinetSampleComboBox_Init('"+this.UniqueID+"','"+lb.UniqueID+"');</script>");

    string key=typeof(ComboBox).FullName;
    if(!Page.IsClientScriptBlockRegistered(key))
    {
    Page.RegisterClientScriptBlock(key,ScriptBlock);
    }
    } protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
    {
    base.AddAttributesToRender(writer);
    writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
    writer.AddAttribute(HtmlTextWriterAttribute.Value,this.Text,true);
    writer.AddAttribute("AutoComplete","Off");
    if(MaxLength>0)
    writer.AddAttribute(HtmlTextWriterAttribute.Maxlength,MaxLength.ToString(),false);
    if(this.AutoPostBack)
    writer.AddAttribute(HtmlTextWriterAttribute.Onchange,Page.GetPostBackEventReference(this),false);
    } public void RaisePostDataChangedEvent()
    {
    OnTextChanged(EventArgs.Empty);
    } public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
    {
    string v=postCollection[postDataKey];
    if(v==Text)
    return false;
    Text=v;
    return true;
    }
            
    /*  //新得系统
    public  new event EventHandler TextChanged; protected  new  void OnTextChanged(EventArgs e)
    {
    if(TextChanged!=null)
    TextChanged(this,e);
    }
    */ /*
    protected override void LoadViewState(object savedState)
    {
    Pair p=(Pair)savedState;
    base.LoadViewState(p.First);
    //((IStateManager)lb.Items).LoadViewState(p.Second); } protected override object SaveViewState()
    {

    //return new Pair(base.SaveViewState(),((IStateManager)lb.Items).SaveViewState());
    return new Pair(base.SaveViewState(),null);

    } protected override void TrackViewState()
    {
    base.TrackViewState();
    //((IStateManager)lb.Items).TrackViewState();
    }
    */
    }}
      

  7.   

    <DefaultProperty("Text"), DefaultEvent("Validated"), ToolboxData("<{0}:ValidateButton runat=server></{0}:ValidateButton>"), ValidationProperty("Text"), _
     ControlBuilder(GetType(ValidateButtonBuilder)), ParseChildren(False), PersistChildren(False)> _
    Public Class ValidateButton大量元数据运用的例子
      

  8.   

    ValidationProperty("Text")
    其中text为要参加验证的property名
      

  9.   

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.ComponentModel;
    using System.IO;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace Commbox
    {
    /// <summary>
    /// WebCustomControl1 的摘要说明。
    /// </summary>
    [
    DefaultEvent("TextChanged"),
    DefaultProperty("Text"),
    ValidationProperty("Text"),//here
    ]
    //public class ComboBox:WebControl, INamingContainer,IPostBackDataHandler
    public class ComboBox:TextBox
    {

    ListBox lb;  
    //public ComboBox():base(HtmlTextWriterTag.Input)
    public ComboBox()
    {
    lb=new ListBox();
    lb.Style["position"]="absolute";
    lb.Style["display"]="none";
    lb.Style["filter"]="progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')";
    lb.EnableViewState=true;
    Controls.Add(lb);
    }

    [
    PersistenceMode(PersistenceMode.InnerProperty),
    DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
    ]
    public  ListItemCollection Items
    {
    get
    {
    return  lb.Items;
    }

    } [
    DefaultValue(null),
    ]
    public  object DataSource
    {
    get
    {
     return  lb.DataSource;
    }
    set
    {
                   if(value!=null)
                   lb.DataSource=value;
    }     }
    [
    DefaultValue(""),
    ]
    public  string  DataMember
    {
    get
    {
    return  lb.DataMember;

    }
    set
    {
    lb.DataMember=value;
    } } [
    DefaultValue(""),
    ] public  string  DataTextField
    {
    get
    {  
    return lb.DataTextField;
    }
    set
    {
    lb.DataTextField=value;

    }
    }
    [
    DefaultValue(""),
    ]
    public  string  DataValueField
    {
    get
    {  
    return lb.DataValueField;
    }
    set
    {
    lb.DataValueField=value;

    }
    } [
    DefaultValue(""),
    ]
    public  string  DataTextFormatString
    {
    get
    {  
    return lb.DataTextFormatString;

    }
    set
    {
    lb.DataTextFormatString=value;
    } } protected new void OnDataBinding(EventArgs e)
    {
      lb.DataBind();
              
    }
    [
    DefaultValue(false),
    ]
    public new bool AutoPostBack
    {
    get
    {
    return ViewState["AutoPostBack"]==null?false:true;
    }
    set
    {
    if(value)
    ViewState["AutoPostBack"]=0;
    else
    ViewState.Remove("AutoPostBack");
    }
    }
    [
    DefaultValue(""),
    ]
    public override string Text
    {
    get
    {
    return Convert.ToString(ViewState["Text"]);
    }
    set
    {
    ViewState["Text"]=value;
    }
    }
    [
    DefaultValue(""),
    ]
    public  string  ComBoxCssClass
    {
    get
    {
    return lb.CssClass;
    }
    set
    {

    lb.CssClass=value;

    }
    } [
    DefaultValue(0),
    ]
    public override int MaxLength
    {
    get
    {
    object o=ViewState["MaxLength"];
    return o==null?0:(int)o;
    }
    set
    {
    ViewState["MaxLength"]=value;
    }
    } static private string _scriptBlock;
    static protected string ScriptBlock
    {
    get
    {
    if(_scriptBlock==null)
    {
    using(Stream s=typeof(ComboBox).Assembly.GetManifestResourceStream(typeof(ComboBox).FullName+".js"))
    {
    using(StreamReader sr=new StreamReader(s))
    {
    _scriptBlock="<script language=jscript>"+sr.ReadToEnd()+"</script>";
    }
    }
    }
    return _scriptBlock;
    }
    }
    protected override void OnPreRender(System.EventArgs e)
    {
    base.OnPreRender(e); Page.RegisterStartupScript(this.UniqueID,"<script>LostinetSampleComboBox_Init('"+this.UniqueID+"','"+lb.UniqueID+"');</script>");

    string key=typeof(ComboBox).FullName;
    if(!Page.IsClientScriptBlockRegistered(key))
    {
    Page.RegisterClientScriptBlock(key,ScriptBlock);
    }
    } protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
    {
    base.AddAttributesToRender(writer);
    writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);
    writer.AddAttribute(HtmlTextWriterAttribute.Value,this.Text,true);
    writer.AddAttribute("AutoComplete","Off");
    if(MaxLength>0)
    writer.AddAttribute(HtmlTextWriterAttribute.Maxlength,MaxLength.ToString(),false);
    if(this.AutoPostBack)
    writer.AddAttribute(HtmlTextWriterAttribute.Onchange,Page.GetPostBackEventReference(this),false);
    } public void RaisePostDataChangedEvent()
    {
    OnTextChanged(EventArgs.Empty);
    } public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
    {
    string v=postCollection[postDataKey];
    if(v==Text)
    return false;
    Text=v;
    return true;
    }
            
    /*  //新得系统
    public  new event EventHandler TextChanged; protected  new  void OnTextChanged(EventArgs e)
    {
    if(TextChanged!=null)
    TextChanged(this,e);
    }
    */ /*
    protected override void LoadViewState(object savedState)
    {
    Pair p=(Pair)savedState;
    base.LoadViewState(p.First);
    //((IStateManager)lb.Items).LoadViewState(p.Second); } protected override object SaveViewState()
    {

    //return new Pair(base.SaveViewState(),((IStateManager)lb.Items).SaveViewState());
    return new Pair(base.SaveViewState(),null);

    } protected override void TrackViewState()
    {
    base.TrackViewState();
    //((IStateManager)lb.Items).TrackViewState();
    }
    */
    }}
      

  10.   

    请小鹿到这个贴子去接分。http://expert.csdn.net/Expert/topic/1870/1870212.xml?temp=.3180963