views:

98

answers:

1
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
}

can anyone tell me, why this is not working?
notes:

  • i've already tried to instanciate the rangeConstraint-Validator inside CreateChildControls = no effect!
  • the validating method is not broken
  • the "non-firing" only occures, if i set no validationGroup

thanks in advance!

A: 

solution:

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

why?
as i do not set validationGroup, this.EnsureChildControls() won't be called unless i call it at OnLoad

Andreas Niedermair