Механизм привязки данных (DataBinding), страница 11

Сейчас мы покажем, как работает свойство CausesValidation класса Control. По умолчанию оно равно true для всех элементов управления на форме. Это означает, что перед тем как передать фокус в рассматриваемый элемент, данные формы проходят валидацию (нет-ли ошибок?). Фокус не переходит в элемент, если есть нарушения. Мы хотим закрыть окно кнопкой bExit. По умолчанию ее свойство CausesValidation==true и нам не удастся с ее помощью закрыть окно, несмотря на то, что мы добавим реакцию на нажатие этой кнопки и вызовем в ней метод Close для нашей формы. Это реализуется так.

¨  Добавьте анонимный делегат на событие Click кнопки bExit.

bExit.Click += delegate { Close (); };

¨  Убедитесь, что при наличии ошибок ввода в поле tPrice закрыть окно кнопкой bExit не удается, но если ошибок нет, то кнопка работает.

¨  Установите свойство CausesValidation в false и повторите опыт.

bExit.CausesValidation = false;

Теперь форма не протестует, так как попытка перевести фокус в кнопку bExit не запускает механизм валидации данных. Чтобы быть точным, добавлю, что форма-то протестует против своего закрытия (см. параметр e.Cancel==true внутри реакции на FormClosing), но мы игнорируем ее протест и насильно скрываем (Hide) форму (не уничтожая ее, то есть, не позволяя вызвать Dispose). Вспомните, так было решено на начальном этапе разработки проекта.

¨  Измените значение свойства DataGridViewAutoSizeColumnsMode, как было показано ранее.

¨  Введите обработку события DataError.

Пример с использованием технологии XML Web Services

В первом приближении Web Service — это механизм предоставления программной логики пользователям сети. Важным в этой технологии является то, что пользователю сети (потребителю Web-сервиса) не нужно устанавливать программный продукт на своей машине для того, чтобы пользоваться его услугами. Код Web-сервиса располагается на Web-сервере, который является надежным хранилищем и способен защитить важные данные или права автора Web-приложения. Пользователю Web-сервиса для работы с ним нужен лишь Web-browser или Windows-приложение, способное отобразить результаты запроса к Web-сервису.

Другим важным достоинством технологии .NET Web Services является то, что она использует протоколы обмена данных и описания услуг, построенными на основе технологии — XML. Напомним, что последняя появилась в феврале 1998 года и успешно внедряется на всех платформах, благодаря усилиям международной организации World Wide Web Consortium (W3C). Она не зависит от выбранного компанией типа операционной системы и от предпочитаемых ею (частных, proprietary) форматов данных.

Мы собираемся  за несколько шагов разработать Windows-приложение, способное обратиться к Web-сервису и отобразить данные, полученные из якобы удаленного источника. На самом деле мы разработаем два проекта в рамках одного решения (Solution).

¨  Один проект с именем MyServices будет иметь тип ASP.NET Web-service Application. Результатом его компиляции является библиотека (DLL).

¨  Второй проект с именем OrdersClient имеет тип обычного Windows-приложения, пользующегося услугами XML Web-сервиса. Это клиентское приложение, размещенное в сборке типа EXE.

Представим, что на стороне клиента имеется XML-файл, в котором хранятся данные таблицы Customers —клиентов, делающих заказы продуктов в вымышленной компании NorthWind. Данные о заказах хранятся в самой компании, то есть, на удаленном сервере. Допустим, что сервер предоставляет своим клиентам информацию о сделанных ими заказах и эта услуга оформлена в виде Web-сервиса. Клиентское Windows-приложение предлагает пользователю выбрать строку в таблице клиентов и запускает при этом Web-сервис, который возвращает результат удаленного запроса к таблице заказов, соответствующих выбранному клиенту. Интерфейс приложения имеет следующий вид.