TABLE_NOTIFICATION
Gilt für: Outlook 2013 | Outlook 2016
Beschreibt eine Zeile in einer Tabelle, die von einem ereignistyp beeinflusst wurde, z. B. einer Änderung oder einem Fehler. Dadurch wird eine Tabellenbenachrichtigung generiert.
Eigenschaft | Wert |
---|---|
Headerdatei |
Mapidefs.h |
typedef struct _TABLE_NOTIFICATION
{
ULONG ulTableEvent;
HRESULT hResult;
SPropValue propIndex;
SPropValue propPrior;
SRow row;
} TABLE_NOTIFICATION;
Members
ulTableEvent
Bitmaske von Flags, die verwendet werden, um den Tabellenereignistyp darzustellen. Die folgenden Flags können festgelegt werden:
TABLE_CHANGED
Gibt auf hoher Ebene an, dass sich etwas an der Tabelle geändert hat. Der Zustand der Tabelle ist wie vor dem Ereignis. Dies bedeutet, dass alle PR_INSTANCE_KEY (PidTagInstanceKey)-Eigenschaften, Lesezeichen, aktuelle Positionierung und Auswahl der Benutzeroberfläche weiterhin gültig sind. Behandeln Sie dieses Ereignis, indem Sie die Tabelle erneut lesen. Dienstanbieter, die keine Rich-Table-Benachrichtigungen implementieren möchten, senden TABLE_CHANGED Ereignisse anstelle detaillierterer Ereignisse, um eine bestimmte Art von Änderung anzugeben.
TABLE_ERROR
Ein Fehler ist in der Regel während der Verarbeitung eines asynchronen Vorgangs aufgetreten. Fehler während der Verarbeitung der folgenden Methoden können dieses Ereignis generieren:
Nach dem Empfangen eines TABLE_ERROR-Ereignisses kann sich ein Client nicht auf die Genauigkeit des Tabelleninhalts verlassen. Außerdem können ausstehende Benachrichtigungen zu anderen Änderungen verlorengehen. Die IMAPITable::GetLastError-Methode stellt möglicherweise keine zusätzlichen Informationen zum Fehler bereit, da er zu einem früheren Zeitpunkt generiert wurde, nicht unbedingt aus dem letzten Methodenaufruf.
TABLE_RELOAD
Die Daten in der Tabelle sollten erneut geladen werden. Dienstanbieter senden TABLE_RELOAD, wenn z. B. die zugrunde liegenden Daten in einer Datenbank gespeichert und die Datenbank ersetzt wird. Behandeln Sie dieses Ereignis, indem Sie davon ausgehen, dass nichts an der Tabelle noch gültig ist, und indem Sie die Tabelle erneut lesen. Alle Lesezeichen, instance Schlüssel, status und Positionierungsinformationen sind ungültig.
TABLE_RESTRICT_DONE
Ein Einschränkungsvorgang, der mit einem IMAPITable::Restrict-Methodenaufruf initiiert wurde, wurde abgeschlossen.
TABLE_ROW_ADDED
Der Tabelle wurde eine neue Zeile hinzugefügt und das entsprechende Objekt gespeichert. TABLE_ROW_ADDED Ereignisse werden nach einem Aufruf der IMAPIProp::SaveChanges-Methode generiert.
TABLE_ROW_DELETED
Eine Zeile wurde aus der Tabelle entfernt. Der propPrior-Member ist auf NULL festgelegt.
TABLE_ROW_MODIFIED
Eine Zeile wurde geändert. Der Zeilenmember enthält die betroffenen Eigenschaften für die Zeile. Mehrere TABLE_ROW_MODIFIED Ereignisse werden in der Reihenfolge gesendet, in der sie in der Tabellenansicht angezeigt werden.
TABLE_ROW_MODIFIED Ereignisse werden gesendet, nachdem Änderungen am entsprechenden Objekt mit einem Aufruf der IMAPIProp::SaveChanges-Methode committet wurden. Wenn die geänderte Zeile jetzt die erste Zeile in der Tabelle ist, ist der Wert des Eigenschaftstags im propPrior-MemberPR_NULL (PidTagNull).
TABLE_SETCOL_DONE
Ein mit einem IMAPITable::SetColumns-Methodenaufruf initiierter Spalteneinstellungsvorgang wurde abgeschlossen.
TABLE_SORT_DONE
Ein tabellensortierungsvorgang, der mit einem IMAPITable::SortTable-Methodenaufruf initiiert wurde, wurde abgeschlossen.
Hresult
HRESULT-Wert für den aufgetretenen Fehler, wenn das ulTableEvent-Element auf TABLE_ERROR festgelegt ist.
propIndex
SPropValue-Struktur für die PR_INSTANCE_KEY-Eigenschaft der betroffenen Zeile.
propPrior
SPropValue-Struktur für die PR_INSTANCE_KEY-Eigenschaft der Zeile vor der betroffenen Zeile. Wenn die betroffene Zeile die erste Zeile in der Tabelle ist, muss propPrior auf PR_NULL und nicht auf null festgelegt werden. Null ist kein gültiges Eigenschaftstag.
Zeile
SRow-Struktur , die die betroffene Zeile beschreibt. Diese Struktur wird für alle Tabellenbenachrichtigungsereignisse gefüllt. Bei Tabellenbenachrichtigungsereignissen, die keine Zeilendaten übergeben, wird das cValues-Element der SRow-Struktur auf Null und das lpProps-Element auf NULL festgelegt. Da diese SRow-Struktur schreibgeschützt ist; -Clients müssen eine Kopie davon erstellen, wenn sie Änderungen vornehmen möchten. Die ScDupPropset-Funktion kann zum Erstellen der Kopie verwendet werden.
Hinweise
Die TABLE_NOTIFICATION-Struktur ist eines der Elemente der Vereinigung von Strukturen, die im Info-Member der NOTIFICATION-Struktur enthalten sind. Das Info-Element enthält eine TABLE_NOTIFICATION-Struktur , wenn das ulEventType-Element der Struktur auf fnevTableModified festgelegt ist.
Die Reihenfolge und der Typ der Spalten im Zeilenmember spiegeln die Reihenfolge und den Typ wider, die zum Zeitpunkt der Benachrichtigungsgenerierung wirksam waren. Die Reihenfolge und der Typ zum Zeitpunkt, zu dem die Benachrichtigung generiert wurde, sind nicht notwendigerweise identisch mit dem Zeitpunkt, zu dem die Benachrichtigung zugestellt wurde.
Weitere Informationen zu Benachrichtigungen finden Sie in den in der folgenden Tabelle beschriebenen Themen.
Thema | Beschreibung |
---|---|
Ereignisbenachrichtigung in MAPI |
Allgemeine Übersicht über Benachrichtigungs- und Benachrichtigungsereignisse. |
Behandeln von Benachrichtigungen |
Erläuterung, wie Clients Benachrichtigungen behandeln sollten. |
Unterstützende Ereignisbenachrichtigung |
Erläuterung, wie Dienstanbieter die IMAPISupport-Methode verwenden können, um Benachrichtigungen zu generieren. |
Da Tabellenbenachrichtigungen asynchron sind, können Clients Benachrichtigungen über eine hinzugefügte Zeile erhalten, nachdem sie auf andere Art und Weisen über die Addition erfahren haben. Es ist möglich, ein TABLE_ERROR-Ereignis zu empfangen, wenn ein Fehler in einer IMAPITable::Sort-, IMAPITable::Restrict- oder IMAPITable::SetColumns-Methode vorliegt oder wenn ein zugrunde liegender Prozess versucht, eine Tabelle z. B. mit neuen oder geänderten Zeilen zu aktualisieren.