Domanda

Ho un semplice gestore di eventi con un evento ItemAdding che modifica un valore di colonna di cui ho bisogno nel metodo ItemUpdated. Dopo aver caricato un documento Word 2007 (* .docx, * .pptx o xlsx) il valore della colonna viene modificato, ma quando proteggo il documento il valore della colonna scompare nel metodo ItemUpdated. Questo accade solo per i documenti di Office 2007, altri file non cancellano il valore.

Il gestore eventi viene eseguito in una raccolta documenti in MOSS 2007.

Grazie

È stato utile?

Soluzione

Abbiamo lo stesso problema. Sembra che le proprietà dell'elenco vengano aggiunte al documento di Office 2007, ma solo con i valori predefiniti per il campo al momento del caricamento / creazione. Una volta modificato l'articolo, stiamo riscontrando che i valori dei documenti di Office hanno la precedenza sui valori impostati nel nostro gestore eventi.

Non si verifica questo quando si utilizza un gestore eventi asincrono, ma il gestore eventi asincrono ha conflitti con gli aggiornamenti su altri thread con determinati tipi di aggiornamenti.

Abbiamo una chiamata di supporto attiva con Microsoft proprio su questo problema. Riconoscono che non lo è Nessun risultato ancora.

Prova a utilizzare un gestore di eventi asincrono (viene eseguito un po 'più tardi del codice che si aggiorna dal documento di Office), ma con cautela.

UPDATE:

Una soluzione alternativa sta impostando SPWeb.ParserEnabled a FALSE rimuoverà la connessione alle proprietà del documento che interromperà il comportamento precedente. Impedisce che le proprietà dell'elenco vengano aggiunte al documento di Office.

Altri suggerimenti

Quando si carica un documento di Office in SharePoint, tenta di estrarre la colonna dal documento e di promuoverlo nell'elenco.

Fai, controlla se il tuo documento ha qualche attributo impostato. In questo caso, può spiegare ciò che vedi.

Nota: apri le proprietà avanzate del documento ed elimina tutte le proprietà personalizzate per sicurezza

Risolvo il problema inserendo SPWeb.ParserEnabled = false nel metodo ItemUpdating.

codice:

properties.ListItem.Web.ParserEnabled = false;

Grazie a tutti per l'aiuto

L'impostazione di SPWeb.ParserEnabled = false funziona, ma ci sono effetti! Uno molto evidente è che romperà i modelli di sito ed elenco. Se SPWeb.ParserEnabled = false e si salva un elenco o un modello di sito, i relativi metadati non sono impostati (ID funzione, Versione prodotto, ecc.) E non saranno disponibili nell'elenco dei modelli tra cui scegliere. Potresti essere in grado di aggirare questo ripristinando SPWeb.ParserEnabled = true durante l'evento itemUpdated, ma non ho ancora testato completamente se questo risolverà tutti i problemi ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top