Representación de propiedades de tipo de campo personalizado
Última modificación: sábado, 03 de abril de 2010
Hace referencia a: SharePoint Foundation 2010
Muchas de las características de los tipos de campo son universales; por ejemplo, todos los tipos de campo tienen una propiedad que permite ordenarlos que se puede establecer como true o false. Sin embargo, los tipos de campo personalizados presentan a menudo propiedades de variable que solo tienen sentido si se tiene en cuenta la finalidad y el tipo de datos subyacentes del tipo de campo. Piense, por ejemplo, en un tipo de campo de expresión regular cuyos valores son cadenas que coinciden con una expresión regular especificada. La expresión regular concreta que tiene que coincidir variará entre una columna y otra. Por esta razón, deben establecerla los usuarios cuando crean una columna basada en el tipo de campo en las páginas Nueva columna de sitio, Cambiar columna de sitio, Crear columna y Cambiar columna.
Representación de las propiedades de campo
Puede definir la representación de las propiedades de un tipo de campo creando una página .ascx para que actúe como un control de usuario del editor de campos. Este permite escribir lógica personalizada de procesamiento de datos en la página de código subyacente del control ASCX, como lógica de cálculo compleja, búsqueda de valores de los orígenes de datos y validación de datos personalizados.
Puede especificar el control que se va a usar como control del editor de campos usando "FieldEditorUserControl" como valor del atributo Name de un Elemento Field (Tipos de campo) en el archivo XML de definición de tipo de campo. Por ejemplo:
<Field Name="FieldEditorUserControl">
/_controltemplates/LookupFieldEditor.ascx
</Field>
Puede especificar un solo control del editor de campos para una clase de tipo de campo determinada. Si hereda de una clase de tipo de campo para la que se ha especificado un control de usuario del editor de campos (como los tipos de campo Búsqueda o Usuario) y especifica otro control del editor de campos en la definición de tipo de campo, no se heredará el control de usuario del editor de campos de la clase primaria. Para heredar el control del editor de campos del tipo de campo primario, no debe incluir el elemento <Field Name="FieldEditorUserControl"> en la definición del tipo de campo o debe especificar el mismo control que se especifica en la definición de tipo de campo primario.
Nota
Salvo dos excepciones, los controles del editor no se usan en las páginas Nueva columna de sitio, Cambiar columna de sitio, Crear columna y Cambiar columna para representar las propiedades de variable de los tipos de campo que se incluyen en SharePoint Foundation (tampoco se usa el método heredado de representación de propiedades de tipo de campo descrito en la siguiente sección). En su lugar, la representación consiste en un marcado codificado de forma rígida en el propio archivo de página (como FldNew.aspx). Las excepciones son los tipos de campo de búsqueda y de usuario que usan un control del editor. Por esta razón, una clase de campo personalizado no puede heredar información sobre la representación de propiedades del tipo de campo en la clase de SharePoint Foundation de la que hereda (excepto, posiblemente, si hereda de los tipos de campo de búsqueda y de usuario). Por ejemplo, si se deriva un tipo de campo personalizado de la clase SPFieldText, el nuevo tipo de campo personalizado no heredará la información de representación para el cuadro de texto (en las páginas Nueva columna de sitio, Cambiar columna de sitio, Crear columna y Cambiar columna) donde los creadores o los editores de columnas especifican la longitud máxima del campo. Para representar cualquiera de las propiedades de tipo de campo de la clase primaria, debe especificar su propia forma de representación con un control de usuario del editor de campos.
Dejando a un lado la pregunta sobre si una clase de tipo de campo personalizado puede heredar información de representación de su clase primaria, la cuestión es si el propio control del editor puede heredar de uno de los controles del editor integrados. La respuesta es "no". La clase del control del editor de campos no puede heredar de las clases de control LookupFieldEditor ni UserFieldEditor, que son los dos únicos controles del editor de campos que se incluyen con SharePoint Foundation. No son accesibles desde el código.
Representación de las propiedades de campo mediante el elemento PropertySchema
En versiones anteriores de SharePoint Foundation los desarrolladores no siempre usaban los controles del editor ASCX para representar propiedades de tipo de campo. En esta sección se describe un método alternativo. Esta información se proporciona únicamente para ayudar a depurar un tipo de campo personalizado que se desarrolló originalmente en una versión anterior de la plataforma de SharePoint Foundation y que usa el método anterior para representar propiedades de tipo de campo. Aunque este método continúa funcionando y los campos personalizados heredados se representan correctamente, se recomienda no usarlo para los nuevos proyectos de campos personalizados, ya que podrían disminuir las posibilidades de que el tipo de campo personalizado sea compatible con versiones futuras de SharePoint Foundation.
Cuando se crea la definición de tipo de campo en un archivo fldtypes*.xml, puede definir cada propiedad de tipo de campo como un elemento Campo dentro del elemento PropertySchema. Si define las propiedades de tipo de campo en el elemento PropertySchema, SharePoint Foundation representa automáticamente esas propiedades basándose en el esquema.
El elemento PropertySchema contiene un elemento Fields, que a su vez contiene un elemento Field para cada propiedad de tipo de campo que se desea definir. Puede usar el lenguaje de marcado Lenguaje de marcado de la aplicación de colaboración (CAML) de cada elemento Field. Para obtener más información, consulte Procedimiento para crear una definición de tipo de campo personalizado.
Este enfoque limita a las opciones de representación disponibles cuando se usa CAML. No se puede especificar un tratamiento personalizado de procesamiento o validación para las propiedades de tipo de campo. Por esta razón, este enfoque funcionaba mejor con propiedades de tipo de campo sencillas que no requerían lógica de validación ni procesamiento compleja.
Nota
Es importante recordar que no hablamos de la validación de determinados valores que los usuarios finales proporcionarán al campo de un elemento de lista concreto en una lista determinada. Más bien hablamos de las propiedades de campo (es decir, columna) establecidas en las páginas Nueva columna de sitio, Cambiar columna de sitio, Crear columna y Cambiar columna. Es muy raro que los valores que usa un autor o editor de columnas para establecer una propiedad de campo necesiten validación.
Vea también
Conceptos
Tipos de campos personalizados
Procedimiento para crear una clase de campos personalizados
Procedimiento para crear una definición de tipo de campo personalizado