Definición de tipo de campo personalizado
Una definición de campo es un archivo XML nombrado en el modelo fldtypes*.xml que se implementa en C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML
. Los tipos de campo que se incluyen en Windows SharePoint Services 3.0 se encuentran en el archivo FLDTYPES.XML. Un archivo de definición de campo contiene la información que Windows SharePoint Services necesita para representar correctamente el campo, incluido el encabezado de columna, en una página de vista de listas (como AllItems.aspx). También suele proporcionar información para representar el campo en la página de vista de elementos (como DispForm.aspx). El nombre y la descripción del tipo de campo, según aparece en estas páginas de la interfaz de usuario como las página Personalizar [lista], Nueva columna de sitio y Crear columna, también se configuran en la definición de tipo de campo. Más importante aún, la definición incluye información sobre el ensamblado que contiene el tipo de campo compilado.
La mayoría de las propiedades de los tipos de campo son obligatorias en todos los tipos de campo prácticamente, como las propiedades Nombre y Descripción. Pero una definición de tipo de campo también puede declarar y definir propiedades especiales del tipo de campo que son relevantes sólo para las columnas hechas desde campos de ese tipo concreto. Se denominan propiedades de tipo de campo variables. Los valores de estas propiedades se establecen cada vez que se crea una columna según el tipo de campo.
Para poder reconoce un tipo de campo personalizado, Windows SharePoint Services 3.0 debe tener una definición de tipo de campo en un archivo fldtypes*.xml. Se crean estos archivos en Microsoft Visual Studio como parte de un proyecto de tipo de campo personalizado. Por ejemplo, si tiene una definición de tipo de campo para un tipo de campo que define un número de seguridad social estadounidense, podría llamar al archivo XML fldtypes_ssn_MyCompany.xml
.
Nota
Recomendamos que utilice un modelo de nomenclatura sistemático y que incluya el nombre de la compañía, de manera que las definiciones de campo del directorio ... \XML
se puedan distinguir de las de otros proveedores de soluciones. Es posible tener más de una definición de tipo en el mismo archivo (como en el ejemplo siguiente) y esto puede ser una directiva razonable si tiene varios tipos de campo que sabe que siempre se implementarán juntos. Pero, por cuestiones de sencillez en las instrucciones, el SDK de Windows SharePoint Services 3.0 supone, por lo general, que hay un único tipo de campo personalizado en cada fldtypes*.xml personalizado. El archivo FLDTYPES.XML que se incluye en Windows SharePoint Services 3.0 tiene muchas definiciones de tipo de campos. No se puede modificar este archivo.
A continuación se proporciona una lista de los elementos incluidos en la definición de tipo de campo. Haga clic en el nombre del elemento para obtener información detallada acerca del mismo.
Elemento contenedor de nivel superior para el archivo fldtypes*.xml. |
|
Elemento contenedor de nivel superior de una definición de tipo de campo. |
|
Elemento que representa una característica única del tipo de campo. |
|
Elemento que define propiedades de tipo de campo variables. |
|
Elemento contenedor de nivel superior dentro de un elemento PropertySchema. |
|
Elemento que representa una propiedad de variable de un tipo de campo personalizado que se establece cuando se crea una columna basada en el tipo de campo. |
|
Elemento que representa el valor predeterminado de una propiedad de un tipo de campo personalizado. |
|
Elemento que define el modo en que el campo se representa en determinadas circunstancias. |
Ejemplo de definición de tipos de campo
El siguiente ejemplo define dos tipos de campo personalizados.
<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
<FieldType>
<Field Name="TypeName">SocialSecurityNumber</Field>
<Field Name="ParentType">Text</Field>
<Field Name="TypeDisplayName">Social Security Number</Field>
<Field Name="TypeShortDescription">Social Security Number (123456789, 123-45-6789)
</Field>
<Field Name="AllowBaseTypeRendering">TRUE</Field>
<Field Name="FieldTypeClass">
AdventureWorks.FieldTypes.SSNField, AdventureWorks.FieldTypes,
Version=1.0.0.0,Culture=neutral,PublicKeyToken=90734cc53324b79c
</Field>
<RenderPattern Name="DisplayPattern">
<Column HTMLEncode="TRUE" />
<Column HTMLEncode="TRUE" UseRelatedField="TRUE"/>
</RenderPattern>
</FieldType>
<FieldType>
<Field Name="TypeName">USAddress</Field>
<Field Name="ParentType">MultiColumn</Field>
<Field Name="TypeDisplayName">US Address</Field>
<Field Name="TypeShortDescription">US Address(12345 NE 123 St. Redmond, WA 98052)
</Field>
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">
AdventureWorks.FieldTypes.USAddressField, AdventureWorks.FieldTypes,
Version=1.0.0.0,Culture=neutral,PublicKeyToken=90734cc53324b79c
</Field>
<PropertySchema>
<Fields>
<Field Name="DefaultCity" DisplayName="Default City"
MaxLength="50" DisplaySize="15" Type="Text">
<Default>Redmond</Default>
</Field>
<Field Name="DefaultState" DisplayName="Default State"
MaxLength="2" DisplaySize="2" Type="Text">
<Default>WA</Default>
</Field>
<Field Name="DefaultZip" DisplayName="Default Zip" MaxLength="5"
DisplaySize="5" Type="Text">
<Default>98052</Default>
</Field>
</Fields>
</PropertySchema>
<RenderPattern Name="DisplayPattern">
<Switch>
<Expr><Column/></Expr>
<Case Value="">
</Case>
<Default>
<Column SubColumnNumber="0" HTMLEncode="TRUE"/>
<HTML><![CDATA[<BR>]]></HTML>
<Column SubColumnNumber="1" HTMLEncode="TRUE"/>
<HTML><![CDATA[, ]]></HTML>
<Column SubColumnNumber="2" HTMLEncode="TRUE"/>
<HTML><![CDATA[ ]]></HTML>
<Column SubColumnNumber="3" HTMLEncode="TRUE"/>
</Default>
</Switch>
</RenderPattern>
</FieldType>
</FieldTypes>
Definiciones de tipo de campo en el modelo de objetos
Después de implementar correctamente una solución de tipo de campo, puede tener acceso a la definición de tipo de campo en el modelo de objetos de Windows SharePoint Services 3.0 como un objeto SPFieldTypeDefinition. Muchos de los valores de configuración que define en el XML de definición de tipo de campo se representan como miembros de sólo lectura de la clase SPFieldTypeDefinition. Muchas de las propiedades de esta clase tienen el mismo nombre que los valores de configuración correspondientes del archivo fldtypes*.xml. Consulte Elemento Field (Tipos de campo) para obtener detalles de las excepciones.
El elemento RenderPattern no es accesible a través de SPFieldTypeDefinition. El elemento PropertySchema es legible en la propiedad PropertySchema como una cadena XML.
Vea también
Otros recursos
Tipos de campos personalizados
Clases de campos personalizados
Representación de propiedades de tipo de campo personalizado
Tutorial: Crear un tipo de campo personalizado