Les données disparaissent après ItemUpdate dans Sharepoint avec des documents Office 2007

StackOverflow https://stackoverflow.com/questions/205913

Question

J'ai un gestionnaire d'événements simple avec un événement ItemAdding qui modifie une valeur de colonne dont j'ai besoin dans la méthode ItemUpdated. Après le téléchargement d'un document word 2007 (* .docx, * .pptx ou xlsx), la valeur de la colonne est modifiée, mais lorsque je protège le document, la valeur de la colonne disparaît dans la méthode ItemUpdated. Cela ne se produit que pour les documents Office 2007, les autres fichiers n'effacent pas la valeur.

Le gestionnaire d'événements s'exécute dans une bibliothèque de documents dans MOSS 2007.

Merci

Était-ce utile?

La solution

Nous avons le même problème. Il semble que les propriétés de la liste soient ajoutées à la documentation de Office 2007, mais uniquement avec les valeurs par défaut du champ lors du téléchargement / de la création. Une fois que l'élément est modifié, nous constatons que les valeurs des documents Office remplacent les valeurs définies dans notre gestionnaire d'événements.

Nous ne rencontrons pas ce problème lors de l'utilisation d'un gestionnaire d'événements asynchrone, mais ce dernier a des conflits avec les mises à jour d'autres threads avec certains types de mises à jour.

Nous avons un appel d’assistance actif avec Microsoft à ce sujet. Ils reconnaissent que ce n'est pas Aucun résultat pour l'instant.

Essayez d'utiliser un gestionnaire d'événements asynchrone (il s'exécute un peu plus tard que le code mis à jour à partir du document Office), mais avec prudence.

UPDATE:

Une solution de contournement consiste à définir la SPWeb.ParserEnabled to FALSE supprimera la connexion aux propriétés du document, ce qui arrêtera le comportement ci-dessus. Cela empêche les propriétés de la liste d'être ajoutées au document Office.

Autres conseils

Lorsque vous téléchargez un document Office dans SharePoint, il essaie d'extraire une colonne du document et de le promouvoir dans la liste.

Vérifiez si votre document a un attribut défini. Si tel est le cas, cela peut expliquer ce que vous voyez.

Remarque: ouvrez les propriétés du document avancé et supprimez toutes les propriétés personnalisées pour vous en assurer

.

Je résous le problème en mettant SPWeb.ParserEnabled = false dans la méthode ItemUpdating.

code:

properties.ListItem.Web.ParserEnabled = false;

Merci à tous pour votre aide

La définition de SPWeb.ParserEnabled = false fonctionne, mais il y a des effets! Un exemple très remarquable est que cela cassera les modèles de sites et de listes. Si SPWeb.ParserEnabled = false et que vous enregistrez un modèle de liste ou de site, ses métadonnées ne sont pas définies (ID de fonction, version du produit, etc.) et ne seront pas disponibles dans la liste des modèles. Vous pourrez peut-être contourner ce problème en réinitialisant SPWeb.ParserEnabled = true lors de l'événement itemUpdated, mais je n'ai pas encore complètement vérifié si cela résoudrait tous les problèmes ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top