Передача информации об ошибках из специальных объектов через IDataErrorlnfo

например если бы у вас

Если вы используете для привязки данных специальные рабочие объекты, как описывалось в предыдущей главе, вы, возможно, захотите, чтобы эти объекты сами отвечали за определение того, что является, а что не является допустимыми данными. Например, если бы у вас был класс PurchaseOrder, Он мог бы содержать логику, определяющую допустимый диапазон для даты заказа. Или, возможно, логика верификации могла бы включать в себя сложную рабочую логику, которая определяла бы, что заказ размещается по определенной категории продаж в определенный день недели, и тогда цена всех пунктов заказа должна снижаться на 10%. В этом случае ввод цен для пунктов заказа должен сравниваться с катало —

Гом цен и скидкой, предоставляемой в зависимости от цены. В любом случае для рабочих объектов требуется стандартный способ уведомления привязанных элементов управления об ошибках верификации на уровне объекта. И снова на выручку приходят интерфейсы. Интерфейс IDataErrorlnfo предназначен именно для такого сценария. Если индивидуальные элементы данных в ваших коллекциях данных реализуют этот интерфейс, привязанные к данным элементы управления могут использовать его для определения того, не произошла ли ошибка, что это за ошибка и с каким свойством объекта она связана. Интерфейс IDataErrorlnfo Имеет два элемента: строковое свойство с именем Error И индексатор , Который принимает строковый параметр и возвращает строку. Индексатор принимает имя свойства или столбца в объекте данных и должен возвращать ошибку, соответствующую этому свойству, если таковая имеется. Это соответствует способу отображения ошибок в DataGridView. Как уже говорилось, DataGridView Может отображать ошибки как на уровне строки, так и на уровне ячейки. Свойство Error Интерфейса IDataErrorlnfo Соответствует ошибке уровня строки, а сообщения об ошибках, возвращаемые индексатором Item, Соответствуют ошибкам уровня ячейки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *