Привязка данных
Выбор города
И, наконец, мы реализуем следующую особенность: при выборе города отображаются гостиницы в выбранном городе. Мы добавляем обработчик события для выбора города. Ниже приведен код для обработки события SelectedlndexChanged.
void listCities_Selected!ndexChanged( Object *sender, System::EventArgs *e) { String *city = listCities › Selected!tem › Text; // Строка ArrayList *hotels = hotelBroker › GetHotels(city); // город BindHotels(hotels); // гостиницы DataBind(); }
Добавление класса Global (Глобальный)
Добавьте к проекту новый файл Global.аsах.h. Как обычно, нет необходимости самостоятельно писать соответствующий код. Его можно скопировать из файла решения, который находится в каталоге CaseStudyXAcmeWeb. Для этого выполните следующие пошаговые инструкции:
- Скопируйте файл Global.asax.h из каталога CaseStudy\AcmeWeb в каталог Demos\AcmeWeb, где расположен новый проект.
- В окне Solution Explorer (Поиск решения) щелкните правой кнопкой мыши на узле Header Files (Заголовочные файлы) под проектом AcmeWeb, и выберите Add › Add Existing Item (Добавить › Добавить существующий элемент). Затем дважды щелкните на файле Global.аsах.h.
Обратите внимание, что в Global.аsах.h метод Application_Start создает экземпляр класса HotelBroker и присваивает его статическому полю hotelBroker. Это поле затем извлекается в исходном файле WebForml.aspx.h методом Page_Load, который был приведен ранее.
//Global.asax.h #using <.\Hotel.dll> #using <System.dll> #using <System.Web.dll> using namespace System; // использование пространства имен Система; using namespace OI::NetCpp::Acme; namespace AcmeWeb // пространство имен AcmeWeb { public _gc class Global: // класс сборщика мусора Глобальный: public System::Web::HttpApplication { public: static HotelBroker *hotelBroker; // статическое поле protected: // защищенный void Application_Start( Object *sender, EventArgs *e) { hotelBroker = new HotelBroker; } }; }
Файл Global.asax и Объект Global (Глобальный)
Чтобы вызвать методы класса Global (Глобальный), который определен в файле Global.asax.h, необходим файл Global.азах. Например, если в каталоге AcmeWeb файл Global.asax отсутствует, информационный сервер Internet (US) не сможет вызвать метод Application_Start. А это очень важный метод, так как именно он создает экземпляр класса HotelBroker. Файл Global.аsах находится в папке CaseStudy\AcmeWeb. Скопируйте этот файл в папку Demos\AcmeWeb. Нет необходимости добавлять его в проект. Но удобства ради мы это сделаем. Чтобы добавить данный файл в проект, выполните следующие пошаговые инструкции.
- Скопируйте файл Global.аsах из каталога CaseStudyXAcmeWeb в каталог DemosXAcmeWeb, в котором расположен ваш новый проект.
- В окне Solution Explorer (Поиск решения) щелкните правой кнопкой мыши на узле проекта AcmeWeb. Из контекстного меню выберите команду Add (Добавить), затем Add Existing Item (Добавить существующий элемент). Установите *.* в качестве фильтра типа файла, а затем дважды щелкните на файле Global.asax.
Файл Global.asax содержит единственную строку (она приведена ниже), которая указывает, что объект приложения является производным от класса AcmeWeb.Global. Этот класс определен в исходном файле Global.asax.h.
<%@ Application Inherits="AcmeWeb.Global" %>