Изменение значения по умолчанию «неверный формат ввода» Ошибка проверки в RIA Services - PullRequest
3 голосов
/ 31 августа 2011

Я пытаюсь изменить сообщение об ошибке по умолчанию в сетке данных Silverlight, когда ввод имеет неправильный формат. Например, вы вводите буквы в числовое поле. Когда вы вкладываете вкладку, появляется сообщение «Введен неверный формат». Я видел, как это исправить, и это добавить атрибут валидации с пользовательским сообщением об ошибке. Проблема в том, что мой объект исходит от служб RIA. Кажется, он игнорирует мое пользовательское сообщение об ошибке из моих атрибутов проверки. Есть ли что-то, что мне нужно сделать, чтобы разоблачить это? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 31 августа 2011

Атрибуты проверки / атрибуты метаданных здесь не помогут, потому что ошибка происходит в элементе управления, а не в свойстве. Элемент управления не может вызвать установщик типа int (или любого другого числового типа), поскольку строковое значение не может быть приведено. Я также хотел бы знать, что вы можете изменить сообщение об ошибке по умолчанию ...

Возможный обходной путь - использовать пользовательский TextBox, который допускает только числовой ввод, который выглядит примерно так:

public class NumericTextBox : TextBox
{
    public NumericTextBox()
    {
        this.KeyDown += new KeyEventHandler(NumericTextBox_KeyDown);
    }

    void NumericTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Back || e.Key == Key.Shift || e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.Delete)
            return;

        if (e.Key < Key.D0 || e.Key > Key.D9)
        {
            if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
            {
                    e.Handled = true;
            }
        } 
    }
}
0 голосов
/ 13 мая 2013

Единственное решение, которое работает, это (это на стороне клиента):

public partial class MyEntity        
{
    public string MyField_string
    {
        get
        {
            return MyField.ToString();
        }
        set
        { 
            decimal res = 0;
            var b = Decimal.TryParse(value, out res);
            if (!b)
                throw new ArgumentException("Localized message");
            else
                this.MyField = Math.Round(res, 2);
        }
    }

    partial void OnMyFieldChanged()
    {
        RaisePropertyChanged("MyField_string");
    }
}

А затем привязать к MyField_string вместо MyField.

0 голосов
/ 31 августа 2011

Похоже, у вас не настроены метаданные для ваших объектов. использование метаданных для проверки в silverlight Это создаст их для вас и внесет аннотацию в проект silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...