Compartir a través de


Funcionamiento de los formularios de SharePoint

Última modificación: miércoles, 07 de julio de 2010

Hace referencia a: SharePoint Foundation 2010

Cada tipo de lista generalmente tiene un conjunto de páginas ASPX de formularios de presentación, edición y creación (DispForm.aspx, EditForm.aspx y NewForm.aspx) que se aprovisionan cuando se aprovisionan las listas. Estas páginas ASPX se aprovisionan en el "espacio de contenido". En otras palabras, no se encuentran en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS y no funcionan a través del directorio virtual /_layouts. Para las bibliotecas de documentos, estas páginas están, por el contrario, contenidas en una subcarpeta oculta de la lista llamada forms. Para otras listas de SharePoint, las páginas se encuentran bajo la carpeta raíz de la lista. Cada una de estas páginas ASPX contiene un objeto Microsoft.SharePoint.WebPartPages.ListFormWebPart que sirve para representar el formulario.

Microsoft SharePoint Foundation 2010 usa Microsoft ASP.NET para mostrar formularios. De forma lógica, cada formulario consta de un conjunto de controles (por ejemplo, un control de la barra de herramientas). Un control especial denominado iterador (Microsoft.SharePoint.WebControls.ListFieldIterator) se usa para recorrer en iteración la colección de campos de lista y agregar cada campo al formulario.

Opciones para personalizar plantillas de formulario

En versiones anteriores de SharePoint Foundation, lo habitual era personalizar los formularios de elementos de lista modificando las definiciones de formulario en el archivo Schema.xml de una lista. El elemento Form contenía los detalles de representación de un tipo específico de formulario, incluidos los subelementos del lenguaje de marcado de la aplicación de colaboración (CAML) que definían el código HTML y los scripts para insertar en la página. SharePoint Foundation usa la funcionalidad de plantillas integrada en las plantillas de control de Microsoft ASP.NET.

Nota

Todavía se pueden aplicar las definiciones de formulario personalizadas mediante el archivo Schema.xml si se establece el atributo UseLegacyForm de los elementos Form en TRUE, aunque se recomienda que en su lugar se usen los controles ASP.NET.

Aunque los formularios todavía se pueden definir en el archivo Schema.xml, ahora puede aprovechar la amplia funcionalidad disponible a través de las plantillas de control de ASP.NET para modificar formularios. Las plantillas de control implican una mezcla de elementos HTML y controles secundarios, e insertan HTML en la página o control contenedores. Mediante la creación de una jerarquía de plantillas de control, puede crear de forma eficaz un modelo de herencia para las aplicaciones web y, por lo tanto, reutilizar el código de forma más eficaz.

Mediante plantillas de formularios personalizadas, puede modificar cómo se representan los formularios de elementos de lista. En el archivo Schema.xml de la definición de lista, puede especificar por tipo de lista a través del atributo Template los identificadores de plantillas de control para representar los formularios. Debe especificar el atributo Template de cualquier formulario en el que desee implementar una plantilla personalizada, que puede ser la misma plantilla o diferentes plantillas. Si no se especifica una plantilla personalizada para un formulario, SharePoint Foundation implementa de forma predeterminada la plantilla predeterminada. Las plantillas de control personalizadas deben definirse dentro de un archivo .ascx en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES. Para obtener más información sobre el uso de Microsoft Visual Studio para crear un control de usuario que funcione en SharePoint Foundation, vea el procedimiento para crear un control de usuario para una página de aplicaciones o un elemento web de SharePoint.

Nota de precauciónPrecaución

Reemplazar una plantilla predeterminada de SharePoint Foundation modifica el comportamiento del formulario en todo el conjunto o granja de servidores y evita que el formulario retenga un comportamiento de plantilla predeterminado cuando actualiza versiones. En su lugar, cree una plantilla de lista propia que use una plantilla de formulario personalizada para implementar un comportamiento personalizado.

Como ejemplo, se puede invalidar el modo en que se representan todos los formularios de elementos de lista de la encuesta. La definición de lista de la encuesta en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\SurveysList\Survey\Schema.xml usa el atributo Template para especificar ListForm como la plantilla que se va a usar para los formularios Mostrar elemento, y la plantilla SurveyForm para los formularios Editar y Nuevo elemento. Esto significa que hay plantillas de control cuyos identificadores son iguales a ListForm y SurveyForm que se encuentran dentro de la carpeta \ControlTemplates, y se pueden reemplazar globalmente las plantillas de formulario predeterminadas usadas para formularios de elementos de lista de la encuesta invalidando estas plantillas. Defina plantillas personalizadas con los mismos identificadores en un archivo .ascx personalizado.

Nota

Sólo puede haber una plantilla con un identificador igual a ListForm o SurveyForm que se usará, por lo que debe usar esta característica de extensibilidad con moderación. Tener identificadores duplicados para las plantillas personalizadas no se admite y puede dar lugar a resultados impredecibles.

También es posible registrar plantillas de formulario personalizadas por tipo de contenido. Si tiene un tipo de contenido específico, es posible para ese tipo de contenido declarar un formulario personalizado que se usará en lugar del formulario estándar de la biblioteca de documentos que se usa de forma predeterminada en las bibliotecas de documentos. Para obtener información acerca de cómo declarar formularios personalizados para un tipo de contenido, consulte Introducción al esquema FormTemplates.

Se admiten otros medios para mostrar formularios. No puede quitar el control ListFormWebPart existente desde una página de formulario de lista, pero puede ocultarlo. A continuación, puede agregar, por ejemplo, un objeto DataFormWebPart y usar XSLT para representar formularios para los elementos. También puede establecer la dirección URL de la página de formulario en el tipo de contenido (DisplayFormUrl, EditFormUrl o la propiedad NewFormUrl) para redirigir a los usuarios a una página de formularios personalizados. Además, puede usar el control Microsoft.SharePoint.WebControls.SPDataSource para enlazar el formulario a los controles ASP.NET sin formato y para actualizar datos.

Nota importanteImportante

Aunque es posible agregar elementos web a los formularios de presentación, edición y creación para elementos de lista (DispForm.aspx, EditForm.aspx y NewForm.aspx), esto no se recomienda ni admite en SharePoint Foundation. Se admite agregar elementos web a las páginas de vista de lista (AllItems.aspx).