Практическое руководство. Работа с автономными решениями с помощью объектной модели InfoPath 2003
Объектная модель, совместимая с InfoPath 2003, предоставляет свойство MachineOnlineState объекта Application, позволяющее коду формы проверять, подключен ли компьютер пользователя к сети. В зависимости от состояния подключения код формы может выполнять различные действия.
Использование свойства "MachineOnlineState"
В приведенном далее примере демонстрируется, как можно добавить в код формы логику, определяющую способ отправки формы на основе наличия или отсутствия подключения компьютера пользователя к сети.
В этом примере предполагается, что была создана форма для отправки отчета о продажах, содержащего поле "period", указывающее год и месяц, по которому создан отчет. Также предполагается, что уже определено подключение к данным и создана логика для отправки отчета, когда пользователь подключен к сети.
Добавление подключения к данным, с помощью которого форма отправляется в качестве вложения сообщения электронной почты
Создайте или откройте шаблон формы InfoPath с управляемым кодом.
В режиме конструктора InfoPath выберите пункт Подключения данных в меню Сервис.
В диалоговом окне Подключения данных нажмите кнопку Добавить.
В мастере подключения данных щелкните Отправка данных и нажмите кнопку Далее.
На следующей странице мастера щелкните В виде сообщения электронной почты и нажмите кнопку Далее.
На следующей странице мастера введите адрес электронной почте в поле Кому.
Чтобы объединить период продаж с текстом "Отчет о продажах", в поле Тема выполните следующие действия.
Нажмите кнопку Формула рядом с полем Тема.
В диалоговом окне Вставка формулы нажмите кнопку Вставить функцию.
В диалоговом окне Вставка функции выберите вариант Текст в списке Категории, а затем дважды щелкните объединить в списке Функции.
Замените первую строку дважды щелкните, чтобы вставить поле на следующий текст (включая одинарные кавычки): 'Отчет о продажах: '
Дважды щелкните вторую строку дважды щелкните, чтобы вставить поле.
В диалоговом окне Выбор поля или группы выберите поле period.
Удалите последнюю строку дважды щелкните, чтобы вставить поле и нажмите кнопку ОК.
В мастере нажмите кнопку Далее.
На следующей странице мастера введите "Отправка электронной почты" в поле Введите имя подключения данных и нажмите кнопку Готово.
Добавление логики для отправки формы в зависимости от наличия или отсутствия подключения пользовательского компьютера к сети
В режиме конструктора InfoPath выберите в меню Сервис пункт Отправка форм.
В диалоговом окне Отправка форм щелкните Enable Submit commands and buttons, а затем в поле Submit to выберите Пользовательская отправка с помощью кода формы.
Установите флажок Редактировать код формы и нажмите кнопку ОК.
Сразу после кода обработчика событий 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; }
Добавьте следующий оператор if в функцию обработчика событий OnSubmitRequest.
// Check the computer's connection state. if (thisApplication.MachineOnlineState==XdMachineOnlineState.xdOnline) { OnlineSubmit(e); } else { OfflineSubmit(e); }
Проверка кода
В Обозревателе решений щелкните правой кнопкой мыши проект, выберите Просмотр, а затем щелкните По умолчанию.
Заполните форму.
Запустите обозреватель Microsoft Internet Explorer.
В обозревателе Internet Explorer выберите пункт Работать автономно в меню Файл.
В приложении InfoPath щелкните Отправка. Должно появиться сообщение, что форма будет отправлена в виде сообщения электронной почты.
Щелкните Отправить. Должно появиться сообщение, объявляющее, что форма отправлена автономно.