Procedimiento para crear una clase de campos personalizados
Última modificación: miércoles, 15 de septiembre de 2010
Hace referencia a: SharePoint Foundation 2010
Para crear una clase de tipos de campo personalizado, deberá derivar una clase de la clase SPField o de una de las clases enumeradas en la tabla inferior, todas las cuales derivan de la clase SPField.
Nota
Hay otras clases de tipos de campo (clases cuyos nombres siguen el modelo SPField*), pero Microsoft SharePoint Foundation las procesa de formas especiales y no es posible derivar nuevas clases de ellas.
Se recomienda usar la siguiente convención de nomenclatura al crear clases de campo personalizado que deriven directa o indirectamente de la clase SPField:
nombreDeTipoDeCampoField
TargetDateField y RegularExpressionField son ejemplos de clases con nombres adecuados. (Las clases derivadas de SPField que se suministran con SharePoint Foundation se crearon antes de determinar esta convención de nomenclatura y siguen el modelo SPFieldnombreDeTipoDeCampo, como por ejemplo la clase SPFieldDateTime).
Las clases de campo personalizado se pueden derivar de los siguientes miembros de la clase SPField.
Las clases de tipo de campo personalizado que no heredan directamente de la clase SPField deben derivar de una de las clases siguientes.
Clase |
Descripción |
---|---|
Representa un tipo de campo Boolean. |
|
Representa un tipo de campo de opción. |
|
Representa un tipo de campo de moneda. |
|
Representa un tipo de campo de fecha y hora. |
|
Representa un campo de búsqueda. El valor del campo para un objeto SPFieldLookup está incluido en un objeto SPFieldLookupValue. |
|
Representa un tipo de campo de varias opciones. El valor de campo para un objeto SPFieldMultiChoice está incluido en un objeto SPFieldMultiChoiceValue. |
|
Representa un tipo de campo de varias columnas. El valor de campo para un objeto SPFieldMultiColumn está incluido en un objeto SPFieldMultiColumnValue. |
|
Representa un tipo de campo de texto multilínea. |
|
Representa un tipo de campo de número. |
|
Representa un tipo de campo de clasificación. El valor de campo para un objeto SPFieldRatingScale está incluido en un objeto SPFieldRatingScaleValue. |
|
Representa un tipo de campo de texto de una sola línea. |
|
Representa un tipo de campo de dirección URL. El valor de campo para un objeto SPFieldUrl está incluido en un objeto SPFieldUrlValue. |
|
Representa un usuario de SharePoint Foundation. |
Nota
Para obtener más información acerca de cómo se crean clases de valor de campo personalizado, consulte Procedimiento para crear una clase de valores de campo personalizados.
Especificación del comportamiento de los campos personalizados
Tras elegir el formulario de clase de campo de la que desea derivar el tipo de campo personalizado, puede seleccionar los miembros de dicha clase que desee invalidar. Puesto que la mayoría de las propiedades y comportamientos que hacen que un tipo de campo sea único están incluidos en su clase, existe un variado conjunto de semántica de invalidación que se obtiene simplemente seleccionando la clase derivada de SPField que invalidará la nueva implementación.
Por ejemplo, la clase SPField contiene los siguientes miembros cuya implementación se puede invalidar, si es necesario, cuando se programan tipos de campo personalizados:
Nota
Para la mayoría de los miembros enumerados en esta sección, la implementación predeterminada de la clase SPField no está diseñada para hacer algo útil; por ejemplo, GetFieldValue simplemente devuelve lo que se le pasó, y GetValidatedString simplemente llama al método ToString de la clase de valor (que no contiene ninguna lógica de validación). Por este motivo, si la clase de tipo de campo personalizado se deriva directamente de SPField, debe invalidar y proporcionar sustitutos para cualquiera de estos miembros que necesite utilizar para su fin previsto.
Miembros de la clase SPField que con frecuencia deben ser invalidados
Miembros de la clase SPField |
Descripción |
---|---|
Devuelve un control que se puede usar para representar el campo en los formularios de presentación, edición y creación y en cualquier página que use controles de campo. Un objeto que crea una instancia de un control de representación contiene, en su propiedad Field, una referencia recíproca al objeto de campo que representa. Como estas referencias recíprocas sugieren, los dos objetos son socios. El objeto derivado de SPField controla la interacción con la base de datos de contenido, mientras que el control de representación derivado de BaseFieldControl controla la interacción con los usuarios y la representación del campo en la interfaz de usuario. No obstante, tenga en cuenta que no es necesario representar un campo personalizado con un control de representación: también se puede representar con un RenderPattern definido en una definición de campo, en cuyo caso la propiedad FieldRenderingControl puede ser null. El modelo más común es usar un control de representación para representar el campo en los modos de creación y edición, y un modelo de representación para representarlo en el modo de presentación. Cuando se usa un control de representación, la clase de campo personalizado debe invalidar el descriptor de acceso get de la propiedad FieldRenderingControl con el siguiente patrón de código estándar:
El atributo de permiso garantiza que solo el código con permiso para usar el modelo de objetos SharePoint Foundation pueda leer la propiedad. La línea que asigna el nombre interno del objeto de campo a la propiedad FieldName también establece la propiedad Field en el objeto de campo. De esta forma se garantiza que el nombreDeTipoDeCampoFieldControl sabe qué objeto está representando. |
|
Devuelve un control que se puede utilizar para representar el campo en los formularios de presentación, edición y creación en aplicaciones móviles. |
|
Devuelve el valor de campo que se va a representar en modo de edición. Este método se usa para los formularios de edición y creación. |
|
Cuando se invalida en una clase derivada, devuelve el valor del campo validado. Invalide este método para lógica personalizada de validación y serialización de datos. (El método base no proporciona lógica de validación y muchas de las clases de SharePoint Foundation que derivan de él, tampoco). Este método puede, a su vez, usar el método ToString del objeto de valor de campo para convertir el objeto de valor de campo en una cadena. La invalidación típica debería:
Consulte Validación de datos de campos personalizados para obtener más información y un ejemplo de un GetValidatedString invalidado. |
|
Invalidar para especificar lógica de tipo de campo personalizado después de agregar un campo a una lista. |
|
Invalidar para especificar lógica de tipo de campo personalizado después de actualizar un campo. |
|
Invalidar para especificar lógica de tipo de campo personalizado antes de eliminar un campo de una lista. |
Miembros de la clase SPField que se invalidan con frecuencia cuando se utiliza un tipo de datos personalizados complejo
También hay varios miembros de la clase SPField que probablemente invalidará cuando el tipo de campo requiera un tipo de datos personalizado complejo que sea distinto del tipo de campo principal. Estos tipos de datos personalizados se definen con clases de valor de campo personalizadas. Para obtener más información, vea Procedimiento para crear una clase de valores de campo personalizados. (Es posible que también deba invalidar estos miembros en otras situaciones, incluso cuando no esté creando tipos de datos personalizados).
Miembros de la clase SPField |
Descripción |
---|---|
Devuelve, como cadena, un valor predeterminado que se puede utilizar para el campo cuando un elemento de lista determinado no tiene ningún valor en el campo. |
|
Devuelve un valor predeterminado que se puede utilizar para el campo cuando un elemento de lista determinado no tiene ningún valor en el campo. |
|
Devuelve el tipo de valor de campo. |
|
Devuelve el valor de campo en forma de objeto. |
|
Devuelve el valor de datos de campo en forma de cadena. |
|
Devuelve el valor de datos de campo en forma de cadena, con formato HTML. Este valor de campo con formato HTML se suele usar para representar el valor de campo directamente en una página. Por ejemplo, se usa en la página del historial de versiones de un elemento de lista. Sin embargo, este valor de campo con formato HTML no se usa en el formulario de presentación. La representación del campo para el formulario de presentación suele representarse desde el elemento Lenguaje de marcado de la aplicación de colaboración (CAML)DisplayPattern en el archivo fldtype*.xml del tipo de campo. |
|
Consulte la nota de la sección Especificación del comportamiento de los campos personalizados. |
|
Devuelve un valor de vista previa de los datos de campo para una vista de tiempo de diseño del control de campo en los modos de presentación y edición. |
Vea también
Tareas
Tutorial: Crear un tipo de campo personalizado
Conceptos
Procedimiento para crear un tipo de campo personalizado
Tipos de campos personalizados
Validación de datos de campos personalizados
Procedimiento para crear una clase de valores de campo personalizados