2009-11-17 5 views
0
public sealed class IntegerBox : TextBox 
{ 
    #region constants 

    private const string RangeConstraintValidatorID = "rangeConstraintValidator"; 

    #endregion 

    #region child controls 

    private readonly CustomValidator _rangeConstraintValidator = new CustomValidator 
    { 
     EnableClientScript = false, 
     Enabled = true, 
     ErrorMessage = "ErrorMessageForRangeConstraintFailed", 
     Display = ValidatorDisplay.None, 
     SetFocusOnError = true, 
     ValidateEmptyText = true 
    }; 

    #endregion 

    #region life cycle 

    protected override void CreateChildControls() 
    { 
     this.Controls.Clear(); 

     this._rangeConstraintValidator.ID = this.ClientID + this.ClientIDSeparator + RangeConstraintValidatorID; 
     this._rangeConstraintValidator.ServerValidate += this.ValidateRangeConstraint; 

     this.Controls.Add(this._rangeConstraintValidator); 

     base.CreateChildControls(); 
    } 

    #endregion 

    /// <summary> 
    /// Gets or sets the number. 
    /// </summary> 
    /// <value>The number.</value> 
    public int? Number 
    { 
     get 
     { 
      /* MAGIC */ 
     } 
     set 
     { 
      /* MAGIC */ 
     } 
    } 

    public override string ValidationGroup 
    { 
     get 
     { 
      this.EnsureChildControls(); 
      return base.ValidationGroup; 
     } 
     set 
     { 
      this.EnsureChildControls(); 
      base.ValidationGroup = value; 
      this._rangeConstraintValidator.ValidationGroup = value; 
     } 
    } 

    public int? MaximumValue { get; set; } 
    public int? MinimumValue { get; set; } 
    public string ErrorMessageForRangeConstraintFailed 
    { 
     get 
     { 
      this.EnsureChildControls(); 
      return this._rangeConstraintValidator.ErrorMessage; 
     } 
     set 
     { 
      this.EnsureChildControls(); 
      this._rangeConstraintValidator.ErrorMessage = value; 
     } 
    } 

    public void ValidateRangeConstraint(object source, ServerValidateEventArgs args) 
    { 
     /* MAGIC */ 
    } 

    #endregion 
} 

quelqu'un peut-il me dire, pourquoi cela ne fonctionne pas?
notes:Pourquoi ce CustomValidator ne fonctionne-t-il pas?

  • je l'ai déjà essayé d'instancier le rangeConstraint-Validator intérieur CreateChildControls = pas d'effet!
  • la méthode de validation est pas cassé
  • la "non-feu" que occures, si je ne mets ValidationGroup

Répondre

1
solution

:

protected override void OnLoad(System.EventArgs e) 
{ 
    base.OnLoad(e); 
    this.EnsureChildControls(); 
} 

pourquoi?
comme je ne mets pas validationGroup, this.EnsureChildControls() ne sera pas appelé à moins que je l'appelle à OnLoad

Questions connexes