Pregunta

Tengo un SPfield personalizado de SharePoint 2010 de tipo SPFieldMultiColumn.Los datos de esta columna se almacenan en una cadena delimitada, que se analiza y se representa en un formato legible en la mayoría de las áreas (vista de lista, 'ver propiedades', etc.).Los datos sin procesar se ven así (redacción modificada):

;#0;#LABEL1;#True;#GUID;#DESCRIPTION_OF_LABEL;#;#1;#LABEL2;#True;#GUID;#DESCRIPTION_OF_LABEL2;# ...

etcétera.Las descripciones son bastante largas, lo que hace que esta cadena tenga cientos de caracteres y sea realmente fea cuando no se analiza y representa.El problema con esto es que en ciertas partes del sistema no podemos controlar la representación del campo.El problema más común que vemos es en la vista de hoja de datos, donde los datos sin procesar se muestran y se ven terribles, y hacen que la hoja de datos sea casi inutilizable para los usuarios.Los datos también aparecen en correos electrónicos de alerta y resultados de búsqueda.

Me encargaron hacer esto "más bonito" y mi solución fue agregar una columna secundaria de "visualización" y ocultar la columna de "datos".Cuando se actualiza o agrega un elemento, tengo receptores de eventos que transforman y mueven los datos al campo de visualización, lo que se ve bien en la vista de hoja de datos, etc.

Todo esto funciona muy bien, excepto por el hecho de que requiere 2 llamadas Update() en cada elemento que obtiene estos metadatos.Uno cuando se completa el campo 'datos' y otro cuando el receptor de eventos copia los datos en la pantalla.

Nuestras granjas de producción (y QAS, pero no de prueba o desarrollo) utilizan Remote Blob Storage (RBS), y nuestro equipo de operaciones descubrió que cada vez que esta columna (o supongo que cualquier columna) se actualiza en un documento de Office (doc, docx, etc.) ) provoca un nuevo blob en el sistema de archivos.Entonces, tal como está la solución hoy, un nuevo archivo cargado generará 2 blobs (uno para la carga y otro para la aplicación de estos metadatos).Con este nuevo receptor de eventos, ahora generaremos 3 blobs, lo cual es inaceptable para nuestro equipo de operaciones (no tenemos un 50 % más de espacio en disco para admitir esto).

'Reparar' RBS está fuera de discusión, por lo que necesito actualizar de alguna manera ambas columnas a la vez, en lugar de actualizar una, lo que activa un receptor de eventos para actualizar la otra.

¿Hay alguna forma de actualizar 2 SPFields personalizados con 1 llamada a Update()?

TL;DR:Solución personalizada con 2 SPFields personalizados: uno actualizado a través del formulario de "edición" y el otro a través de un receptor de eventos (el segundo depende completamente del primero para sus datos).¿Cómo puedo actualizar ambos sin el uso de un receptor de eventos (con solo una llamada Update()?)

¿Fue útil?

Solución

Parece que estás usando el ItemUpdated evento.si usaste ItemUpdating Creo que podrías modificar AfterProperties en lugar de realizar una segunda actualización.

Esto puede serte útil: nbsp:Receptores de eventos

Otros consejos

Cuando crea una columna de búsqueda, puede elegir mostrar columnas adicionales de su lista de búsqueda.

Parece que lo que querría aquí es una lista con su etiqueta / descripción, y luego una columna de búsqueda en la columna de la etiqueta y tener la descripción como un campo adicional.Sin embargo, no sé si estaría perfectamente limpio en la opinión de la hoja de datos, pero sería una mejora.

Otra solución potencial para este tipo de problema es una columna calculada, pero de lo que veo de su escenario, no encaja.

Licenciado bajo: CC-BY-SA con atribución
scroll top