• Иллюстрированный самоучитель по Architecture .NET

    Привязка данных

    Выбор города

    И, наконец, мы реализуем следующую особенность: при выборе города отображаются гостиницы в выбранном городе. Мы добавляем обработчик события для выбора города. Ниже приведен код для обработки события 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. Для этого выполните следующие пошаговые инструкции:

    1. Скопируйте файл Global.asax.h из каталога CaseStudy\AcmeWeb в каталог Demos\AcmeWeb, где расположен новый проект.
    2. В окне 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. Нет необходимости добавлять его в проект. Но удобства ради мы это сделаем. Чтобы добавить данный файл в проект, выполните следующие пошаговые инструкции.

    1. Скопируйте файл Global.аsах из каталога CaseStudyXAcmeWeb в каталог DemosXAcmeWeb, в котором расположен ваш новый проект.
    2. В окне Solution Explorer (Поиск решения) щелкните правой кнопкой мыши на узле проекта AcmeWeb. Из контекстного меню выберите команду Add (Добавить), затем Add Existing Item (Добавить существующий элемент). Установите *.* в качестве фильтра типа файла, а затем дважды щелкните на файле Global.asax.

    Файл Global.asax содержит единственную строку (она приведена ниже), которая указывает, что объект приложения является производным от класса AcmeWeb.Global. Этот класс определен в исходном файле Global.asax.h.

    <%@ Application Inherits="AcmeWeb.Global" %>
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.