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


_DataDOMEventSink_Event.OnValidate Событие

Определение

Происходит после принятия изменений в базовом XML-документе формы, но до возникновения OnAfterChange события.

public:
 event Microsoft::Office::Interop::InfoPath::SemiTrust::_DataDOMEventSink_OnValidateEventHandler ^ OnValidate;
event Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnValidateEventHandler OnValidate;
member this.OnValidate : Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnValidateEventHandler 
Event OnValidate As _DataDOMEventSink_OnValidateEventHandler 

Тип события

Примеры

В следующем примере Site свойство DataDOMEventObject объекта используется для проверка значения узла. Если проверка данных завершается сбоем ReportError(Object, String, Boolean, String, Int32, String) , метод используется для создания пользовательской ошибки:

[InfoPathEventHandler(MatchPath="/my:myFields/my:field1", EventType=InfoPathEventType.<span class="label">OnValidate</span>)]
public void field1_<span class="label">OnValidate</span>(DataDOMEvent e)
{
 if (int.Parse(e.Site.text) &gt; 50)
 {
  e.ReportError(
   e.Site, 
   "Invalid quantity. The total number of each type of block cannot exceed 50.", 
   false,
   "",
   2,
   "modeless");
 }

 if (int.Parse(e.Site.text) &lt; 0)
 {
  e.ReportError(
   e.Site, 
   "Invalid quantity. The total number of each type of block cannot be less than 0.", 
   false,
   "",
   2,
   "modeless");
 }
}

В следующем примере Site свойство DataDOMEventObject объекта используется для проверка значения узла. Если проверка данных завершается сбоем ReportError(Object, String, Boolean, String, Int32, String) , метод используется для создания пользовательской ошибки:

[InfoPathEventHandler(MatchPath="/my:myFields/my:field1", EventType=InfoPathEventType.<span class="label">OnValidate</span>)]
public void field1_<span class="label">OnValidate</span>(DataDOMEvent e)
{
 if (int.Parse(e.Site.text) &gt; 50)
 {
  e.ReportError(
   e.Site, 
   "Invalid quantity. The total number of each type of block cannot exceed 50.", 
   false,
   "",
   2,
   "modeless");
 }

 if (int.Parse(e.Site.text) &lt; 0)
 {
  e.ReportError(
   e.Site, 
   "Invalid quantity. The total number of each type of block cannot be less than 0.", 
   false,
   "",
   2,
   "modeless");
 }
}

Комментарии

Этот обработчик событий не разрешает пользователям отменять операцию.

В ходе события OnValidate базовому XML-документу формы назначается режим "только чтение".

Событие OnValidate обычно используется для обработки ошибок и работы с ErrorsCollection коллекцией, например для добавления новых ошибок или удаления существующих.

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

Применяется к