Frage

Ich habe einen einfachen Event-Handler mit einem ItemAdding Ereignisse, das einen Spaltenwert ändert, die ich in der ItemUpdated Methode benötigen. Nach dem Hochladen ein Word 2007-Dokument (* .docx, * .pptx oder xlsx) der Wert der Spalte geändert wird, aber wenn ich das Dokument der Wert der Spalte verschwindet im ItemUpdated Verfahren schützen. Dies geschieht nur für Office 2007-Dokumente, andere Dateien löschen nicht den Wert.

Der Event-Handler läuft in einer Dokumentbibliothek in MOSS 2007.

Danke

War es hilfreich?

Lösung

Wir haben das gleiche Problem. Es scheint, dass die Eigenschaften aus der Liste sind in dem Büro 2007 doc hinzugefügt, sondern nur mit den Standardwerten für das Feld auf Upload / Schöpfung. Sobald das Element bearbeitet wir erleben, dass die Office-Dokumente Werte, die Werte überschreiben Sie in unserem Event-Handler gesetzt.

Wir erleben dies nicht, wenn ein asynchronen Ereignishandler verwenden, aber die asynchronen Ereignishandler haben Konflikte mit Updates auf anderen Threads mit bestimmten Arten von Updates.

Wir haben einen Support-Call aktiv mit Microsoft über dieses sehr Problem. Sie erkennen dies nicht Noch keine Ergebnisse.

Versuchen Sie, einen asychronous Ereignishandler verwenden (es läuft eine wenig später als der Code, der aus dem Office-Dokument aktualisiert), aber mit Vorsicht zu genießen.

UPDATE:

Eine Abhilfe setzt die SPWeb.ParserEnabled auf FALSCH wird die Verbindung zu den Dokumenteigenschaften entfernen, die das oben beschriebene Verhalten zu stoppen. Es verhindert, dass die Liste Objekte zum Office-Dokument hinzugefügt werden.

Andere Tipps

Wenn Sie ein Office-Dokument in Sharepoint laden, versucht es Spalt aus dem Dokument zu extrahieren und sie in die Liste zu fördern.

Sie prüfen, ob Ihr Dokument jedes Attribut gesetzt hat. Wenn dies der Fall ist, kann es erklären, was Sie sehen.

Hinweis: öffnen Voraus Dokumenteigenschaften und löschen Sie alle benutzerdefinierten Eigenschaften sicher sein

ich das Problem beheben, den SPWeb.ParserEnabled = false im ItemUpdating Methode setzen.

code:

properties.ListItem.Web.ParserEnabled = false;

Danke alle für Hilfe

Einstellung SPWeb.ParserEnabled = false funktioniert, aber es gibt Effekte! Ein sehr auffällig ist, dass es Website- und Listenvorlagen brechen. Wenn = false SPWeb.ParserEnabled, und Sie erhalten eine Liste oder Website-Vorlage speichern, dann ist es Meta-Daten nicht gesetzt ist (Feature-ID, Produktversion, etc) und es wird nicht in der Liste der Vorlagen zur Auswahl zur Verfügung. Sie könnten in der Lage sein, dies zu umgehen, indem SPWeb.ParserEnabled = true während des ItemUpdated Ereignis zurückzusetzen, aber ich habe nicht vollständig getestet, ob diese alle Probleme lösen wird noch ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top