Pregunta

He escrito una costumbre formulario de edición de una lista que significa que voy a perder ciertos fuera de la caja de capacidades tales como archivos Adjuntos, ya que era parte de la salida de la caja de formulario.La forma en que me han puesto en práctica la forma es escribiendo una costumbre elemento web visual utilizando ASP.NET y el código de C# detrás y, a continuación, durante la implementación puedo ocultar la existente en editar elemento web en la EditForm.página aspx y, a continuación, agregue en mi web, parte de ella.

La forma en que me he desarrollado la forma es con una adecuada separación de preocupaciones donde mi forma realmente no sabe nada acerca de SharePoint y que sólo se pasa un objeto de datos a un objeto datamanager que, a continuación, escribe los datos de SharePoint.

El problema viene con los archivos adjuntos de forma que escribí.Lo que he encontrado es que SPContext.Current.ListItem.Attachments inmediatamente contiene el archivo en el FileUpload el control sobre el post de nuevo.Yo no tiene que escribir ningún código para que esto suceda, activar sólo una devolución de datos, mientras que un archivo está seleccionado en el control.

En la mayoría de los casos sólo puedo ignorar el hecho de que esto sucede y todo funciona bien, porque yo en realidad nunca actualización de la instancia del elemento de la lista.Pero en algunos casos el borde tales como la carga de un archivo que adjunto un archivo con el mismo nombre ya existe, la forma de golpes sin necesidad de tocar el código.

También encontré que hay un AttachmentsControl en el SPContext.Current.FormContext.FieldControlCollection y la eliminación de este en cada Page_Init caso de que el objeto UserControl no ayuda el tema en absoluto.

La razón por la que quiero que mi forma y dentro del contexto del elemento de la lista es para que todos los de la salida de la caja de las barras de herramientas / cinta de opciones / menús de contexto / etc.aún adecuadamente enlace al formulario.Yo podría redirigir desde el formulario de edición de un fuera de contexto con la página de mi web parte en ella, pero esto parece hackish e innecesaria (por no hablar sólo de codificación malo).

¿Alguien tiene alguna idea sobre por qué este comportamiento está sucediendo y cómo puedo evitarlo?Parece muy malo el diseño de cualquier formulario de la lista automáticamente secuestrar un control para su propio uso, como este.Me siento como SharePoint debe tener su propio control y acaba de salir de la ASP.NET el control solo, pero que parece no ser el caso.

¿Fue útil?

Solución

En una lista estándar de formulario si un archivo adjunto con el mismo nombre fue añadido varias veces.Si el elemento se almacena el formulario produce una excepción, que uno de los anexos se agregan múltiples de tiempo y evitar que agregar el elemento.

En su caso, anulará esta excepción, lo que provoca que no hay archivos adjuntos están disponibles cuando se intenta almacenar el elemento de la lista.Para evitar este comportamiento, se necesita comprobar manualmente si un archivo se agrega varias veces de lo contrario se producirá un error de siempre.

Usted necesita para eliminar el defecto NewForm elemento web en lugar de ocultarlo.A continuación, la excepción no se planteó y que son capaces de obtener los datos adjuntos.

Otros consejos

Si conecta un controlador de eventos para el itemAdding evento hace fuego sobre las condiciones de error?Usted puede ser capaz de utilizar que ejecutar algún código personalizado para controlar el evento, o, posiblemente, sólo suprimir el sistema de mensaje de error del sistema y proporcionar su propio más agradable uno.

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