Pregunta

Tengo un controlador de eventos simple con un evento ItemAdding que cambia el valor de una columna que necesito en el método ItemUpdated. Después de cargar un documento de Word 2007 (* .docx, * .pptx o xlsx), el valor de la columna cambia, pero cuando protejo el documento, el valor de la columna desaparece en el método ItemUpdated. Esto solo ocurre con los documentos de Office 2007, otros archivos no borran el valor.

El controlador de eventos se ejecuta en una biblioteca de documentos en MOSS 2007.

Gracias

¿Fue útil?

Solución

Tenemos el mismo problema. Parece que las propiedades de la lista se agregan al documento de Office 2007, pero solo con los valores predeterminados para el campo en la carga / creación. Una vez que se edita el elemento, experimentamos que los valores de los documentos de Office anulan los valores establecidos en nuestro controlador de eventos.

No experimentamos esto cuando usamos un controlador de eventos asíncrono, pero el controlador de eventos asíncrono tiene conflictos con las actualizaciones en otros subprocesos con ciertos tipos de actualizaciones.

Tenemos una llamada de soporte activa con Microsoft sobre este problema. Ellos reconocen que esto no es No hay resultados todavía.

Intente usar un controlador de eventos asíncronos (se ejecuta un poco más tarde que el código que se actualiza desde el documento de Office), pero con precaución.

ACTUALIZAR:

Una solución alternativa es configurar SPWeb.ParserEnabled a FALSE eliminará la conexión a las propiedades del documento que detendrá el comportamiento anterior. Evita que las propiedades de la lista se agreguen al documento de Office.

Otros consejos

Cuando carga un documento de Office en SharePoint, intenta extraer la columna del documento y promocionarlos a la lista.

Hazlo, verifica si tu documento tiene algún atributo establecido. Si este es el caso, puede explicar lo que ves.

Nota: abra las propiedades del documento de avance y elimine todas las propiedades personalizadas para estar seguro

Resuelvo el problema al poner SPWeb.ParserEnabled = false en el método ItemUpdating.

código:

properties.ListItem.Web.ParserEnabled = false;

Gracias a todos por ayuda

Configurar SPWeb.ParserEnabled = false funciona, ¡pero hay efectos! Uno muy notable es que romperá las plantillas de sitios y listas. Si SPWeb.ParserEnabled = falso, y guarda una lista o plantilla de sitio, sus metadatos no están establecidos (Id. De la característica, Versión del producto, etc.) y no estarán disponibles en la lista de plantillas para elegir. Es posible que pueda evitar esto al restablecer SPWeb.ParserEnabled = true durante el evento itemUpdated, pero aún no he probado completamente si esto resolverá todos los problemas ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top