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

http://localhost:1075/OrdersService.asmx?WSDL

Номер порта 1075 (в вашем случае он может быть иным) был автоматически выбран системным сервисом ASP.NET Developement Server, который автоматически запустился для поддержки работы нашего сервиса и вы можете просмотреть его свойства в окне с таким же длинным именем. Найдите его в области System Tray панели задач, вызовите контекстное меню и дайте команду Show Details.

Здесь вы увидите номер порта, который выбрал сервер. Используйте его при задании адреса файла с описанием нашего сервиса в окне Internet Explorer. Обратите внимание на параметр запуска сервиса (?WSDL). Он использует коллекцию QueryString, построенную по типу хэш-таблицы и рассматриваемую в рамках курса ASP.NET.

Файл OrdersService.disco (discovery file) помогает найти услугу. Это XML-файл с простой структурой, просмотрите его. При создании Web-сервиса студия автоматически сгенерировала класс OrdersService. Вы видели только часть этого класса. Вторую его часть вы можете увидеть в файле Reference.cs, который прячется в инструменте Reference.map, который вложен в папку localhost проекта OrdersClient. В эту часть класса помещены переменные, свойства и методы, которые дают возможность запускать метод GetOrders как в синхронном, так и в асинхронном, режимах. Детали всей технологии достаточно сложны, но результаты ее применения вы уже видите.

Разработка проекта типа Windows Application

Сейчас мы приступим к разработке класса главной формы Windows-приложения OrdersClient. Переименуйте файл с этим классом в MainForm.cs. Если студия предложит автоматически переименовать и сам класс, то согласитесь с этим. Для работы с сервисом нам понадобится множество переменных. Добавьте их в класс MainForm.

private Dictionary<String, Bitmap> flags;

private System.Windows.Forms.Timer timer;

private BackgroundWorker ordersWorker;

private DataSet ds;

private BindingSource customersSource, ordersSource;

protected OrdersService service = new OrdersService ();

Для того, чтобы класс OrdersService был виден в нашем пространстве имен, надо добавить директиву:

using NorthWindXML.localhost;

Впрочем, наша студия может сделать это самостоятельно, вы только должны научиться чутко слушать ее подсказки. Перейдите в режиме дизайна и придайте форме облик, который показан на рисунке. Заметьте, что элементы типа MenuStrip и ToolStrip (точнее, сопровождающие их мастера) обладают командами: Insert Standard Items. Воспользуйтесь этими командами, но затем уберите лишние элементы. Не забудьте вставить элемент типа StatusStrip (см. внизу окна). Это контейнер, способный поддерживать коллекцию вложенных элементов. Внедрите в эту коллекцию два элемента: ToolStropLabel и ToolStropProgressBar с именем progressBar.

Новый рисунок

В левой части окна расположен DataGridView с именем gridCustomers, справа внизу — gridOrders. Идентификаторы остальных элементов сведем в таблицу.

Элемент

Идентификатор (Name)

Label

lblCustomerID

Label

lblAddress

Label

lblPhone

Label

lblFax

PictureBox

pic

TextBox

tCustomerID

TextBox

tAddress

TextBox

tCity

TextBox

tRegion

TextBox

tPostalCode

TextBox

tCountry

TextBox

tPhone

TextBox

tFax

DataGridView

gridCustomers

DataGridView

gridOrders

Добавьте обработчик события загрузки нашей формы и введите в него следующий код.

private void MainForm_Load (object sender, EventArgs e)

{

SetBinding ();

FillDictionary ();

customersSource.Position = 0;

customersSource_CurrentChanged (customersSource, EventArgs.Empty);

}