MaskedEditValidator DisplayMoney не отображается в Composite Control

Я создаю простой составной элемент управления с функциональностью AJAX. При попытке реализовать MaskedEditValidator свойство DisplayMoney не работает. MaskedEdit рендерится без прикрепленного знака доллара. Есть идеи? Вот мой код:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    priceTextbox.ID = this.ID + "_price";
    quantityTextbox.ID = this.ID + "_quantity";
    timeTextbox.ID = this.ID + "_time";
    submitButton.ID = this.ID + "_submit";
    submitButton.Text = "Submit";
    priceMask.TargetControlID = priceTextbox.ClientID.ToString();
    priceMask.ID = priceMask.TargetControlID.ToString() + "_extender";
    priceMask.BehaviorID = "priceMaskExtender";
    priceMask.Mask = "99.99";
    priceMask.DisplayMoney = MaskedEditShowSymbol.Left;

}

2 ответа

Решение

Попробуйте добавить следующую строку:

priceMask.MaskType = MaskedEditType.Number;

При желании, установите ClearMaskOnLostFocus в false, если это поведение, которое вы хотите (он сохраняет знак доллара, даже когда не сфокусирован).

Установщик свойства DisplayMoney устанавливает свойство только в том случае, если MaskType равен MaskedEditType.Number.

set
{
   if (MaskType == MaskedEditType.Number)
   {
     SetPropertyValue("DisplayMoney", value);
   }
}

Установщик свойства DisplayMoney устанавливает свойство только в том случае, если MaskType равен MaskedEditType.Number.

set
{
   if (MaskType == MaskedEditType.Number)
   {
     SetPropertyValue("DisplayMoney", value);
   }
}

Так что вам нужно установить:

priceMask.MaskType = MaskedEditType.Number;
Другие вопросы по тегам