user57508
user57508

Reputation:

Why does this CustomValidator not fire?

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:

Upvotes: 0

Views: 317

Answers (1)

user57508
user57508

Reputation:

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

Upvotes: 1

Related Questions