Поделиться через


Практическое руководство. Работа с автономными решениями с помощью объектной модели InfoPath 2003

Объектная модель, совместимая с InfoPath 2003, предоставляет свойство MachineOnlineState объекта Application, позволяющее коду формы проверять, подключен ли компьютер пользователя к сети. В зависимости от состояния подключения код формы может выполнять различные действия.

Использование свойства "MachineOnlineState"

В приведенном далее примере демонстрируется, как можно добавить в код формы логику, определяющую способ отправки формы на основе наличия или отсутствия подключения компьютера пользователя к сети.

В этом примере предполагается, что была создана форма для отправки отчета о продажах, содержащего поле "period", указывающее год и месяц, по которому создан отчет. Также предполагается, что уже определено подключение к данным и создана логика для отправки отчета, когда пользователь подключен к сети.

Добавление подключения к данным, с помощью которого форма отправляется в качестве вложения сообщения электронной почты

  1. Создайте или откройте шаблон формы InfoPath с управляемым кодом.

  2. В режиме конструктора InfoPath выберите пункт Подключения данных в меню Сервис.

  3. В диалоговом окне Подключения данных нажмите кнопку Добавить.

  4. В мастере подключения данных щелкните Отправка данных и нажмите кнопку Далее.

  5. На следующей странице мастера щелкните В виде сообщения электронной почты и нажмите кнопку Далее.

  6. На следующей странице мастера введите адрес электронной почте в поле Кому.

  7. Чтобы объединить период продаж с текстом "Отчет о продажах", в поле Тема выполните следующие действия.

    1. Нажмите кнопку Формула рядом с полем Тема.

    2. В диалоговом окне Вставка формулы нажмите кнопку Вставить функцию.

    3. В диалоговом окне Вставка функции выберите вариант Текст в списке Категории, а затем дважды щелкните объединить в списке Функции.

    4. Замените первую строку дважды щелкните, чтобы вставить поле на следующий текст (включая одинарные кавычки): 'Отчет о продажах: '

    5. Дважды щелкните вторую строку дважды щелкните, чтобы вставить поле.

    6. В диалоговом окне Выбор поля или группы выберите поле period.

    7. Удалите последнюю строку дважды щелкните, чтобы вставить поле и нажмите кнопку ОК.

  8. В мастере нажмите кнопку Далее.

  9. На следующей странице мастера введите "Отправка электронной почты" в поле Введите имя подключения данных и нажмите кнопку Готово.

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

  1. В режиме конструктора InfoPath выберите в меню Сервис пункт Отправка форм.

  2. В диалоговом окне Отправка форм щелкните Enable Submit commands and buttons, а затем в поле Submit to выберите Пользовательская отправка с помощью кода формы.

  3. Установите флажок Редактировать код формы и нажмите кнопку ОК.

  4. Сразу после кода обработчика событий OnSubmitRequest добавьте следующие две функции:

    public void OnlineSubmit(DocReturnEvent e)
    {
       // Logic for submitting online goes here.
    }
    
    public void OfflineSubmitX(DocReturnEvent e)
    {
       // Access and submit to the e-mail adapter.
       DataAdaptersCollection myDataAdapters = 
          thisXDocument.DataAdapters;
       EmailAdapterObject submitAdapter = 
          (EmailAdapterObject) myDataAdapters["E-mail Submit"];
       submitAdapter.Submit();
    
       // Notify the user that the form was submitted offline.
       System.Text.StringBuilder message = 
       new System.Text.StringBuilder();
       message.Append("You submitted your Sales Report offline. ");
       message.Append("Your Sales Report is in your outbox ");
       message.Append("and will be submitted when you connect to ");
       message.Append("the network.");
        thisXDocument.UI.Alert(message.ToString());
    
       // The submission was successful.
       e.ReturnStatus = true;
    }
    
  5. Добавьте следующий оператор if в функцию обработчика событий OnSubmitRequest.

    // Check the computer's connection state.
    if (thisApplication.MachineOnlineState==XdMachineOnlineState.xdOnline)
    {
        OnlineSubmit(e);
    }
    else
    {
        OfflineSubmit(e);
    }
    

Проверка кода

  1. В Обозревателе решений щелкните правой кнопкой мыши проект, выберите Просмотр, а затем щелкните По умолчанию.

  2. Заполните форму.

  3. Запустите обозреватель Microsoft Internet Explorer.

  4. В обозревателе Internet Explorer выберите пункт Работать автономно в меню Файл.

  5. В приложении InfoPath щелкните Отправка. Должно появиться сообщение, что форма будет отправлена в виде сообщения электронной почты.

  6. Щелкните Отправить. Должно появиться сообщение, объявляющее, что форма отправлена автономно.