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 
} 

아무에게도 왜 이것이 작동하지 않는지 말할 수 있습니까?
노트 :이 CustomValidator가 실행되지 않는 이유는 무엇입니까?

  • 은 이미을 CreateChildControls의 = 내부에 영향을 rangeConstraint-검사기를 실체화하지하려고했습니다!

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

    이유 :

  • 검증하는 방법은 내가 더 validationGroup

답변

1

솔루션을 설정하지 않는 경우에만, occures

  • 은 "비 발사를"파괴되지 않는 이유는 무엇입니까?
    설정 안 함 validationGroup, this.EnsureChildControls()은 전화하지 않는 한 전화하지 않습니다. OnLoad

  • 관련 문제